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

cssseries-flex

时间:2023-03-28 15:52:12 HTML

一、概念1、简介flex是“弹性布局”的意思,任何容器都可以使用flex布局。2.定义及用法flex是以下属性的简写:flex-grow表示有剩余空间时分配给item的比例flex-shrink表示空间不足时缩小item的比例flex-basis占用的空间主轴flex设置弹性项目的弹性长度。3、语法flex:flex-growflex-shrinkflex-basis|auto|initial|inherit;flex:1//等同于flex:01auto注:如果元素不是弹性项,则flex属性无效。InternetExplorer10及更早版本不支持flex-growflex-shrinkflex-basis属性。二、flex的用法1、flex-growflex-grow属性指定了item相对于同一容器中其他弹性item的增长,默认值为0(不扩大)。<样式>#main{宽度:350px;高度:100px;边框:1px实心#c3c3c3;显示:flex;}#maindiv:nth-??of-type(1){flex-grow:1;}#maindiv:nth-??of-type(2){flex-grow:3;}#maindiv:nth-of-type(3){flex-grow:1;}#maindiv:nth-of-type(4){flex-grow:1;}#maindiv:nth-of-type(5){flex-增长:1;}

给样式加上flex-grow后,总宽350px,一共1+3+1+1+1=7个模块,所以每个div的宽度为50px,第二个元素占3,所以宽度为150px。2.flex-shrinkflex-shrink属性固定在同一个容器中,该item相对于其他弹性item的收缩率默认为1。<样式>#main{宽度:350px;高度:100px;边框:1px实心#c3c3c3;显示:flex;}#maindiv{flex-grow:1;伸缩收缩:1;flex-basis:100px;}#maindiv:nth-of-type(2){flex-shrink:3;}/div>从上面代码可以看出总宽度应该是100*5=500,但是当前样式宽度是350px,所以空间不够,flex会尽量不改变容器的宽度,但要压缩项目的宽度。计算逻辑:100是flex-basis溢出空间的值=100x5-350=150总权重=100x4x1+100x3=700v1=100-(150x1x100)/700=78.572v2=100-(150x3x100)/700=35.741v3=v4=v5=v1如果不希望元素被压缩,则必须将flex-shrink设置为0。例如,如果flex-shrink=v3的0,会占用100px的空间,剩余空间的宽度为250px。溢出空间=100x4-250=150总重量=100x3x1+100x3=600v1=100-(150x1x100)/600=75v2=100-(150x3x100)/600=25v4=v5=v13,flex-basisflex-basis属性指定了flex项目的初始长度,如果不设置,则等于内容本身的空间。<样式>#main{宽度:300px;高度:100px;边框:1px实心#c3c3c3;显示:flex;}#maindiv{flex-grow:0;伸缩收缩:1;flex-basis:50px;}#maindiv:nth-of-type(2){flex-basis:100px;}4.思考题3.容器属性1.Flex容器属性容器属性有:flex-directionflex-wrapflex-flowjustify-contentalign-itemsalign-content2,flex-direction确定主轴的方向(即item的排列方向).container{flex-direction:row|行反转|栏目|列反转;对于水平方向,起点在左端。row-reverse:主轴水平,起点在右端。column:主轴垂直,起点在上边缘。column-reverse:主轴垂直,起点在底部,如下图:3.flex-wrap弹性元件总是沿主轴排列,所以如果不能排列主轴,使用flex-wrap判断容器中的物品是否可以wrap.container{flex-wrap:nowrap|包装|wrap-reverse;}属性对应如下:nowrap(默认值):不换行wrap:换行,第一行在上面wrap-reverse:换行,第一行在下面默认不换行,但是元素不会直接溢出容器,会涉及到元素的弹性伸缩,如下图:4.flex-flow是flex-direction属性和flex-wrap属性的简写形式,默认值为rownowrap.box{flex-flow:||;}5.justify-content定义项目在主轴上的对齐方式。box{证明内容:flex-start|弹性端|中心|间隔|space-around;}属性对应如下:flex-start(默认值):左对齐flex-end:右对齐center:居中space-between:两端对齐,item之间的间隔相等space-around:两边如下图所示,两个项目的间距相等:6.align-items定义项目如何在交叉轴上对齐。box{对齐项目:flex-start|弹性端|中心|基线|stretch;}属性对应如下:flex-start:对齐横轴起点flex-end:对齐横轴终点center:对齐横轴中点baseline:对齐第一行基线itemtextoftextstretch(默认值):如果item没有设置height或者设置为auto,会占据整个容器的高度如下图所示:7.align-content定义多轴的对齐方式。如果项目只有一个轴,则此属性不起作用(需要多个列才能起作用)。box{对齐内容:flex-start|弹性端|中心|间隔|环绕空间|stretch;}属性对应:flex-start:与横轴起点对齐flex-end:与横轴终点对齐center:与横轴中点对齐space-between:与两者对齐横轴的两端,轴之间的间隔均匀分布space-around:每根轴的两边等距。因此,轴之间的距离是轴与框架之间的距离的两倍。:柔性;弹性包装:包装;对齐内容:flex-start;}#maindiv{height:50px;弹性增长:0;伸缩收缩:0;弹性基础:50px;}效果图如下: