flex布局兼容性问题(28、弹性布局flex)

本文目录
28、弹性布局flex
布局类型:
1、浮动+定位
2、自适应(百分比)
3、响应式布局
4、弹性布局(flex布局)
弹性布局的优缺点:
1、优点:兼容性支持所有浏览器(Webkit内核的浏览器要加上-webkit-),可以随用户的喜好进行调节,可以将任何一个容器指定为Flex布局;
2、缺点:弹性布局较复杂,需兼容IE6;
注意:当使用了弹性布局,在css中的float、clear和vertical-align就会失效
1、flex-direction弹布局方向即容器方向
row:默认方向,从左到右
row-reverse:从右向左
column:从上到下
column-reverse:从下到上
2、flex-wrap换行
nowrap:默认不换行
wrap:向下换行
wrap-reverse:向上换行
3、flex-flow方向和换行的简写
例如,flex-flow:row nowrap;
4、justify-content容器方向上的对齐方式
flex-start:默认向左对齐
flex-end:向右对齐
center:居中对齐
space-between:两端对齐,子元素之间有间隔,子元素与边框之间无间隔
space-around:每个子元素两侧的间隔相等。子元素之间的间隔比子元素与容器边框的间隔大一倍
5、align-items默认垂直容器方向上的对齐方式
flex-start:垂直方向的起点对齐
flex-end:垂直方向的终点对齐
center:垂直方向的中点对齐
baseline:与第一个子元素中文字的基线对齐
stretch(默认值):如果子元素没有设置高度或者高度设为auto,那么它将占满整个容器的高度
6、align-content子元素两种方向上的对齐
flex-start:当容器方向子元素刚好填满时,与垂直方向的起点对齐
flex-end:当容器方向子元素刚好填满时,与垂直方向的终点对齐
center:当容器方向子元素刚好填满时,与垂直方向的中点对齐
space-between:当容器方向子元素刚好填满时,垂直方向两端对齐,子元素之间的等间距间隔
space-around:两个方向两侧的间隔都相等。所以轴线之间的间隔比轴线与边框的间隔大一倍
stretch(默认值):沾满整个垂直方向
1、order排序,integer(整数),数值小的在前面
2、flex-grow放大比例,number,默认值为0
3、flex-shrink缩小比例,number,默认值为1
注:给所有子元素设置该属性为1,当空间不足时,所有子元素将等比例缩小平分所有空间。如果单独给某个子元素设置为0,那么该子元素将空间不足时不缩小。
4、flex-basis属性
该属性定义了给子元素分配空间时其占据的空间为多少,可以设置为与其width和height属性一样的值,那么它将被分配固定的空间大小。
5、flex属性:flex-grow、flex-shrink和flex-basis的简写
6、align-self属性
该属性允许设置过额子元素有与其他子元素不一样的对齐方式,可以覆盖align-items属性
auto(默认值):表示默认继承父级的align-items属性
flex-start:垂直方向的起点对齐
flex-end:垂直方向的终点对齐
center:垂直方向的中点对齐
baseline:与第一个子元素中文字的基线对齐
stretch(默认值):如果子元素没有设置高度或者高度设为auto,那么它将占满整个容器的高度
当flex容器中包含absolute元素时
我们设置了 justify-content: center; ,不同机型显示区别如下:
有趣的是,我们把 justify-content: center; 改成 justify-content: flex-end; 时,它们的表现也不一致:
当我们把绿色块改成相对定位时 .div2{ position: relative; } ,就会发现flex布局在任何机子上都正常了。
可见,是因为 flex 布局 和 绝对定位 abosolute 起冲突了。
***隐藏网址***
尽管文档规定如此,但我们 在高版本的机型里面,却能实现两者的配合使用。也许将来这种兼容差异就不存在了,flex容器里面也可以有绝对定位元素了。
问题原因是找到了,但还是得解决实际问题。
目前个人的需求是:绝对定位元素要实现水平居中,但又无法提前知道该元素的宽度。
最后在小伙伴的帮助下,找到了一种 margin:auto 的解决方法:
该方法的兼容性还没有具体测试,但目前来讲,能适配手头上的所有机型(包括iphone5)。
参考文献:
flex布局中的绝对定位 :嗯,完美。还给出了w3.org的技术文档说明。
在flex布局中,不要使用绝对定位(fixed、absolute) :一篇只说明现象,不给出具体原因分析的,同病相怜的家伙。
实现绝对定位元素水平垂直居中的两种方法 :完美啊~给出了一个很漂亮的 margin:auto 方案啊!
用弹性和布局时,display:flex可以和display:none一起使用吗
弹性布局:是提供一种更加有效的方式来对一个容器中的条目进行排列、对齐和分配空白空间。即便容器中条目的尺寸未知或是动态变化的,弹性盒布局模型也能正常的工作。
让一个盒子具有弹性布局的属性,要先给其加上样式display:flex;OK我们也会看到有写的是display:box/display:flexbox;其实他们只是不同时期的规范:
新规范:2013年最新版本规范的语法 即display:flex/inline-flex;
中间版本:2011年非官方规范的语法 即display:flexbox/inline-flexbox;
老规范:2009年规范的语法 即display:box/inline-/box;
带inline-的容器渲染为行内元素,没带的为块级元素
可以看到flex近几年几种不同的写法,相应的也带来很多兼容性问题,所以在开发过程中我们要兼顾所有版本!

更多文章:
corrcoef函数(为什么matlab里corrcoef函数只能产生2×2的系数矩阵 求高手帮忙)
2026年1月20日 21:30
excel表格加减乘除函数公式(EXCEL中加法减法乘法除法怎么算啊!)
2025年11月13日 20:30
js字符串转date类型(js怎么把string转换成date)
2025年8月11日 06:00
onclick与click的区别(onclick和click的区别)
2025年5月31日 04:00
oracle触发器怎么设置(oracle apex 怎么设置触发器)
2025年8月13日 19:30
兼容织梦系统cms系统(什么是CMS系统目前流行的CMS系统主要有哪些各有哪些优缺点如何选择CMS系统拜托各位大神)
2025年10月5日 07:00
phpcmsv9最新利用工具(WampServer是一款WAMP软件包,该软件包由哪些软件整合而成)
2026年4月13日 18:15
写出在powerpoint中创建演示(阐述在PowerPoint中创建演示文稿的方法(至少三种))
2026年5月31日 02:30
word如何使用正则匹配(c#word查找用如何用正则表达式模糊匹配)
2025年6月14日 21:00
swift code 中国工商银行(中国工商银行的Swift code(银行国际代码)是什么)
2025年9月1日 20:45















