当前位置: 首页 > Web前端 > HTML5

重温FlexLayout

时间:2023-04-05 14:40:04 HTML5

简介这是关于Flex布局的实践。想多说几句介绍一下Flex的相关属性。想想还是算了吧。贴出阮一峰老师的两篇文章:Flex布局教程:语法Flex布局教程:实例如何使用CSS提高对Flex的理解:CSS技巧:checkbox+label+selectorCSS技巧:hover+active常规布局1.两栏左边定宽右边自适应布局:源码left

right
.flex-layoutdisplayflex.flex__item&:nth-child(1)background-color#c04851//玉红色flex00200px&:nth-child(2)background-color#440e25//bronzePurpleflex11auto说明:flex是一个简写属性,用于设置flex-grow、flex-shrink、flex-basis。一般来说,让元素等高需要额外的设置,flex容器有一个默认的属性值:align-items:stretch,这对你有帮助,当然也会给你带来不好的体验。2.三栏布局圣杯布局和双飞翼布局都是三栏布局。简单介绍一下:圣杯布局的关键是为父元素设置padding,然后子元素通过负边距和定位;双飞翼布局的关键是中间的Child元素的column比较多,设置了margin,那么sidebar就使用了margin负值。通过flex实现就简单多了:源码">nav
side
.holy-graildisplayflex.flex__contentflex11autobackground-color#009999.flex__nav,.flex__sideflex00120px.flex__navorder-1background-color#1D7373.flex__sidebackground-color#33CCCC说明:中间的列是核心,所以需要先渲染,DOM结构放在最前面,主要是使用order将导航放在前面的属性。常用布局除了整体结构中使用的这些布局外,一些组件往往需要一些简单的布局。1.仿导航栏示例:实现效果图:源码="header__more">.headerheight100pxwidth100%background-color#f9f1db//clamwhitedisplayflexalign-itemscenter>*margin010px&__avatar,&__moreflex0080pxheight80pxborder-radius50%&__avatarbackground-color#FFAC40&__titlecolor#FF9000&__moremargin-leftautobackground-color#A65E00解释:这里我们主要使用margin-auto来占据剩余的空间,所以我们使用margin:0auto来获得水平居中相同。2、输入框仿制示例:实现渲染:源码="message=!message"v-if="message">消息.input-groupflex0075%height40pxborder2pxsolidredborder-radius4pxdisplayflexalign-itemscenter>*box-sizingborder-box.input-textfont-size20pxpadding-left10pxheight100%flex1outlinenonebordernone.iconflex0024pxheight24pxborder-radius50%background-color#648e93//晚波蓝色原因解释:这也是一个常规的三栏布局。关键是.input-text的flex:1属性可以占据剩余空间,在其他附件不存在的情况下也可以相应扩展。3.卡片实效图:源码123456.flex-card显示flexflex-flowcolumnnowrap.headerflex-basis80pxbackground-color#4E51D8.footerflex-basis50pxbackground-color#00B060.articleflexautobackground-color#FF9000displayflexflex-flowrowwrapalign-content居中对齐内容space-around&__itemwidth28%height50pxbox-shadow02px4pxrgba(255,255,255,.4),3px05pxrgba(0,0,0,.6)原因解释:改变主轴为垂直方向,页眉和页脚分别被推到顶部和底部,因为文章的flex:auto属性,可以避免absolute的滥用和在内容中间使用align-不同于align-items,它可以将多行元素作为一个整体来对待。4、瀑布实体效果:CSS颜色会在编译时给出,直接刷新页面不可行。只有重新保存代码编译才能改变颜色。源码$flow-columns=5;//流的列表$flow-items=8;//flow每列的个数//随意数randomColor(min,max){returnfloor(math(0,'random')*(max-min+1)+min);}randomPx(min,max){returnfloor(math(0,'random')*(max-min+1)+min)px;}.flex-flow{显示:flex;证明内容:空格之间;溢出:隐藏;.flow-column{显示:flex;弹性方向:列;弹性:0018.6%;.flow-item{宽度:100%;保证金:.1rem0;}}}forcolumnin(1..$flow-columns){.flow-column:nth-child({column}){foritemin(1..$flow-items){.flow-item:nth-child({item}){flex:00randomPx(30,100);背景色:rgb(randomColor(0,255),随机颜色(0,255),随机颜色(0,255));}}}}说明:flex实现瀑布流比较简单。友情提示:使用手写笔时,请添加标点符号。找编译错误花了我将近二十分钟。最后,push前需要合并多个commit:gitlog--onelinegitrebase-ixxxxxxxgitlog--onelinegitstatusgitpush初步把css传了一点,接下来继续完善简单的resume...参考资料VSCodeFriendlyTipsforVuetify