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

Flex布局制作自适应页面--语法与案例

时间:2023-03-30 13:19:27 CSS

.box{display:flex;显示:-webkit-flex;/*水平方向,左对齐*/flex-direction:row;/*水平方向,右对齐*//*flex-direction:row-reverse;*//*垂直方向,顶对齐*//*flex-direction:column;*//*垂直方向,底对齐*//*flex-direction:column-reverse;*/background:#999;宽度:100%;}.box跨度{边距:10px10px;填充:10px;背景:#ff0;宽度:50px;}本文发表于:github项目地址:https://github.com/tenadolant...SegmentFault地址:https://segmentfault.com/a/11。..CSDN地址:http://blog.csdn.net/qq_34648...博客园地址:http://www.cnblogs.com/zhanai...Flex布局介绍Flex英文是flexiblebox,翻译为弹性盒子,flex布局就是弹性布局。Flex布局为盒子模型提供了很大的灵活性。任何容器都可以指定为弹性布局。设置方法为:.box{display:flex;}内联元素使用flexlayout.box{display:inline-flex;}以webkit为核心的浏览器必须加上webkit前缀。盒子{显示:弹性;display:-webkit-flex;}注意:使用Flex布局后,里面的float、clear、vertical-align属性将失效。弹性布局中的基本概念是采用弹性布局的元素,称为弹性容器(flexcontainer),简称“容器”。它的所有子元素都会自动成为称为弹性项目或简称为“项目”的容器的成员。默认情况下,容器有两个轴:水平主轴和垂直交叉轴。主轴的起始位置(与边框的交点)称为mainstart,结束位置称为mainend;侧轴的起始位置称为crossstart,结束位置称为crossend。默认情况下,项目沿主轴排列。单品占据的主轴空间称为主尺寸,侧轴占据的空间称为交叉尺寸。属性1、flex-direction2、flex-wrap3、flex-flow4、justify-content5、align-items6、align-content1、容器的flex-direction设置item的排列方向,默认为rowflex-direction:row|行反转|栏目|column-reverse当设置为flex-direction:row时,效果:当设置为flex-direction:row-reverse时,效果:当设置为flex-direction:column时,效果:当设置为flex-direction:column-reverse时,效果:直接复制以下代码保存为html文件,查看效果:.box{display:flex;显示:-webkit-flex;/*水平方向,左对齐*/flex-direction:row;/*水平方向,右对齐*//*flex-direction:row-reverse;*//*垂直方向,顶对齐*//*flex-direction:column;*//*垂直方向,底对齐*//*flex-direction:column-reverse;*/background:#999;宽度:100%;}.box跨度{边距:10px10px;填充:10px;背景:#ff0;宽度:50px;}你好1你好2你好3你好4span>

2、flex-wrap设置item是否在一行,默认是nowrapflex-wrap:wrap|现在收起|wrap-reverse当设置为flex-wrap:wrap时,效果:当设置为flex-wrap:nowrap时,效果(不wrap,默认会缩放):当设置为flex-wrap:wrap-reverse时,效果(下面一行section):将下面的代码直接复制保存为html文件,查看效果:.box{display:flex;显示:-webkit-flex;/*换行符*//*flex-wrap:wrap;*//*没有换行符,默认*//*flex-wrap:nowrap;*//*换行符,第一行在下面*//*flex-wrap:wrap-reverse;*/背景:#999;宽度:100%;}.box跨度{边距:10px10px;填充:10px;背景:#ff0;宽度:50px;}你好1你好2你好3你好4你好5你好6你好7
3.flex-flow属性是flex-direction属性和flex-wrap属性的简写形式。默认值为rownowrap4和justify-content属性定义item在主轴上的对齐方式,默认值为flex-startjustify-content:flex-start|弹性端|中心|间隔|space-around当设置为justify-content:flex-start,effect:当设置为justify-content:flex-end,effect:当设置为justify-content:center,effect:当设置为justify-content:space-between,effect:当设置为justify-content:space-around,effect:直接复制以下代码保存为html文件查看效果:.box{display:flex;显示:-webkit-flex;/*默认,左对齐项目*/justify-content:flex-start;/*item右对齐*//*justify-content:flex-end;*//*item居中对齐*//*justify-content:center;*//*item两端对齐*//*justify-content:space-between;*//*每个项目两边的间距相等*//*justify-content:space-around;*/background:#999;宽度:100%;}。框跨度{边距:10px10px;填充:10px;背景:#ff0;宽度:50px;}你好1你好2你好3你好4你好5你好6你好7
5.align-items属性定义项目在垂直轴上的对齐方式。默认值为stretch,适用于item在纵轴上高度不同的情况。为了更好的看到效果,我在项目中添加了一些样式align-items:flex-start|弹性端|中心|基线|stretch当设置为align-items:flex-start时,效果:当设置为align-items:flex-end时,效果:当设置为align-items:center时,效果:当设置为align-items:baseline时,效果:当设置为align-items:stretch时,效果:直接复制以下代码保存为html文件即可查看效果:.box{display:flex;显示:-webkit-flex;/*纵轴顶部对齐*//*align-items:flex-start;*//*纵轴底部对齐*//*align-items:flex-end;*//*中点对齐oftheverticalaxis*//*align-items:center;*//*item第一行文本的基线对齐*//*align-items:baseline;*//*默认对齐方式,如果高度item的未设置或设置为auto,会占据整个容器的高度*/align-items:stretch;背景:#999;宽度:100%;}.box跨度{边距:10px10px;填充:10px;背景:#ff0;宽度:50px;}.box跨度:nth-??of-type(2n){高度:80px;padding-top:20px;}Hello1Hello2Hello3Hello4你好5你好6你好7
6.align-content属性定义了多个轴的对齐方式。如果项目只有一个轴,则此属性无效。(也就是需要设置容器的flex-wrap属性值进行换行)(为了效果更明显,我设置了容器的高度)align-content:flex-start|弹性端|中心|间隔|环绕空间|stretch当设置为align-content:flex-start时,效果:当设置为align-content:flex-end时,效果:当设置为align-content:center时,效果:当设置为align-content:fspace-between,效果:当设置为align-content:flex-start时,效果:当设置为align-content:stretch时,效果:可以直接复制以下代码另存为html文件查看效果:.box{显示:flex;显示:-webkit-flex;弹性包装:包装;/*对齐到垂直轴的顶部*//*align-content:flex-start;*//*对齐到垂直轴的底部*//*align-content:flex-end;*//*对齐纵轴的中点*//*align-content:center;*//*对齐纵轴的两端*//*align-content:space-between;*//*两者的间隔每个轴的边都相等*//*align-content:space-around;*//*默认值,轴占据整个交叉轴默认值,*/align-content:stretch;背景:#999;宽度:600px;高度:300px;}.boxspan{边距:10px10px;填充:10px;背景:#ff0;宽度:50px;}Hello1你好2你好3你好4你好5你好6span>Hello7项目的属性1、order2、flex-grow3、flex-shrink4、flex-basis5、flex6、align-self1、order定义了项目的顺序,较小的value,排列越高,默认为0。如下所示,将第一个的顺序属性设置为10,将第二个的顺序属性设置为-1,将第五个的顺序属性设置为-10。效果如下。直接复制以下代码,另存为html文件,查看效果:.box{display:flex;显示:-webkit-flex;背景:#999;}.boxspan{边距:10px10px;填充:10px;背景:#ff0;}.boxspan:nth-of-type(1){order:10;}.boxspan:nth-of-type(2){order:-1;}.boxspan:nth-of-type(5){顺序:-10;}你好1你好2你好3你好4你好52.flex-grow属性定义了项目的放大比例。它主要适用于父元素的宽度大于子元素宽度之和的情况。它定义了子元素如何分配父元素剩余的宽度,默认为0,此时不请求父元素的宽度。如下,将第一个子元素的flex-grow属性值设置为1,将第二个子元素的flex-grow属性值设置为1,则父元素剩余的宽度将分成三等份相加分别是第一个和第二个子元素。子元素,效果如下:直接复制以下代码保存为html文件查看效果:.box{display:flex;显示:-webkit-flex;背景:#999;}。框跨度{边距:10px10px;填充:10px;背景:#ff0;width:50px;}.boxspan:nth-of-type(1){flex-grow:1;}.boxspan:nth-of-type(2){flex-grow:2;}你好1你好2你好3你好4你好5例如:以上面为例,假设父元素的宽度为1000px,每个子元素的宽度为100px,还剩下500px的宽度,flex-grow第一个子元素的值为1,第二个子元素的flex-grow值为2,则将500px分成三份,第一个子元素增加500倍1/为一个宽度3px,第二个子元素增加500倍宽度2/3px。3.flex-shrink属性定义item的收缩率。默认为1,即如果空间不足,item会收缩。如果项目没有设置flex-shrink属性,项目默认的flex-shrink值为1,当空间不足时,会按比例缩小。如果一个item的flex-shrink属性为0,其他item为1,则flex-shrink属性为0的item在空间不足时不会收缩。flex-shrink的原理和flex-grow类似,相互理解也不难。4.flex-basis属性定义item在分配多余空间之前所占用的主轴空间(默认值为auto,即item的原始大小)。注意:如果同时为item设置了flex-basis和width属性值,flex-basis会覆盖width的值。比如同时给项目设置属性,flex-basis:80px;宽度:100px;那么项目的实际宽度为80px;5、flex属性flex属性是flex-grow、flex-shrink和flex-basis的简写,默认值为01auto。6.align-self属性align-self属性允许单个项目与其他项目具有不同的对齐方式,并且可以覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性。如果没有父元素,相当于stretch。直接复制以下代码保存为html文件,查看效果:.box{display:flex;显示:-webkit-flex;背景:#999;高度:300px;align-items:flex-start;}.boxspan{margin:10px10px;填充:10px;背景:#ff0;}.boxspan:nth-of-type(3){align-self:flex-end;}你好1你好2你好3你好4你好5参考:[1]http://www.ruanyifeng.com/blo...[2]https://developer.mozilla.org...[3]http://blog.csdn.net/qiudw_01...[4]https://www.w3cplus.com/css3/...