解决flex布局新旧版本的兼容性写法

简介: 最新开发h5的项目用了css的新特性flex布局,遇到了CSS兼容性的问题。在网上找到了如下的解决办法。我写页面的时候用到过很多的flex布局,觉得非常好用。下面附上一篇不错的flex布局介绍的文章。 Flex 布局教程想了解的可以自己去看看这篇博文,或者自己百度,这里先部多做介绍,我们主要来说一说flex布局的兼容性问题。

最新开发h5的项目用了css的新特性flex布局,遇到了CSS兼容性的问题。在网上找到了如下的解决办法。


我写页面的时候用到过很多的flex布局,觉得非常好用。下面附上一篇不错的flex布局介绍的文章。


Flex 布局教程想了解的可以自己去看看这篇博文,或者自己百度,这里先部多做介绍,我们主要来说一说flex布局的兼容性问题。


why?


大家可能想问了,flex布局为什么会存在兼容性问题啊?


之所以存在兼容性问题,是因为技术在不断的更新,有些旧的浏览器只支持旧语法的书写方式,所以就出现所谓的兼容性问题


what?


那么新旧版本是什么?


flex布局分为旧版本dispaly: box;,过渡版本dispaly: flex box;,以及现在的标准版本display: flex;。所以如果你只是写新版本的语法形式,是肯定存在兼容性问题的。


  • Android
  • 2.3 开始就支持旧版本 display:-webkit-box;
  • 4.4 开始支持标准版本 display: flex;
  • IOS
  • 6.1 开始支持旧版本 display:-webkit-box;
  • 7.1 开始支持标准版本display: flex;
  • PC
    ie10开始支持,但是IE10的是-ms形式的。


下面是各个浏览器的支持情况


微信图片_20220512165629.png


how?


所以我们该如何进行兼容性的写法呢?


  • 盒子的兼容性写法


.box{    display: -webkit-box;  /* 老版本语法: Safari, iOS, Android browser, older WebKit browsers. */    display: -moz-box;     /* 老版本语法: Firefox (buggy) */    display: -ms-flexbox;  /* 混合版本语法: IE 10 */    display: -webkit-flex; /* 新版本语法: Chrome 21+ */    display: flex;         /* 新版本语法: Opera 12.1, Firefox 22+ */}


  • 子元素的兼容性写法


.

flex1 {      -webkit-box-flex: 1   /* OLD - iOS 6-, Safari 3.1-6 */      -moz-box-flex: 1;     /* OLD - Firefox 19- */                  -webkit-flex: 1;      /* Chrome */      -ms-flex: 1           /* IE 10 */      flex: 1;              /* NEW, Spec - Opera 12.1, Firefox 20+ */}


这种兼容写法不一定起效的。尤其是在底版本安卓系统中。因为什么呢?因为所有都是向下兼容的,所以写法的顺序一定要写好了才起作用。就是把旧语法写在底下,个别不兼容的移动设置才会识别,哪些是旧的语法,你懂的。那些带box的一定要写在最下面即可。

所以上面的兼容写法应该是这样的才对:


.box{
    display: -webkit-flex;  /* 新版本语法: Chrome 21+ */
    display: flex;          /* 新版本语法: Opera 12.1, Firefox 22+ */
    display: -webkit-box;   /* 老版本语法: Safari, iOS, Android browser, older WebKit browsers. */
    display: -moz-box;      /* 老版本语法: Firefox (buggy) */
    display: -ms-flexbox;   /* 混合版本语法: IE 10 */   
 }
.flex1 {            
    -webkit-flex: 1;        /* Chrome */  
    -ms-flex: 1             /* IE 10 */  
    flex: 1;                /* NEW, Spec - Opera 12.1, Firefox 20+ */
    -webkit-box-flex: 1     /* OLD - iOS 6-, Safari 3.1-6 */  
    -moz-box-flex: 1;       /* OLD - Firefox 19- */       
 }
相关文章
|
1天前
|
容器
代码适配性问题怎么解决,如何快速创建左右布局
代码适配性问题怎么解决,如何快速创建左右布局
|
1月前
|
容器
Flutter笔记:Box协议的布局约束原理与应用
Flutter笔记:Box协议的布局约束原理与应用
62 0
|
9月前
|
Web App开发
clearTimeout 方法在IE上的兼容问题
clearTimeout 方法在IE上的兼容问题
55 0
|
11月前
|
人工智能 前端开发 搜索推荐
前端布局和兼容
阅读报纸时容易发现,虽然报纸中的内容很多,但是经过合理地排版,版面依然清晰、易读。同样,在 制作网页时,要想使页面结构清晰、有条理,也需要对网页进行“排版”。 “版心”(可视区) 是指网页中主体内容所在的区域。一般在浏览器窗口中水平居中显示,常见的宽度值为 960px、980px、1000px、1200px等。
78 0
|
Rust 安全 算法
给Stretch(Rust编写的Flexbox布局引擎)新增特性,我掉了好多头发 | GaiaX开源解读
GaiaX(盖亚),是在阿里文娱内广泛使用的Native动态化方案,其核心优势是性能、稳定和易用。本系列文章《GaiaX开源解读》,带大家看看过去三年GaiaX的发展过程。
132 0
|
存储 容器
Flutter(五)——单一子元素组件(一)
Flutter(五)——单一子元素组件(一)
128 0
Flutter(五)——单一子元素组件(一)
|
Java Android开发 容器
Flutter(五)——单一子元素组件(二)
Flutter(五)——单一子元素组件(二)
202 0
Flutter(五)——单一子元素组件(二)
|
前端开发 JavaScript API
jQuery 多库共存与修改样式方法
jQuery 多库共存与修改样式方法
jQuery 多库共存与修改样式方法
|
容器
Flex 布局教程:语法篇
Flex 布局教程:语法篇
152 0
Flex 布局教程:语法篇
|
XML 编解码 数据安全/隐私保护
HarmonyOS实战—Text组件宽高三种值的写法和颜色属性
HarmonyOS实战—Text组件宽高三种值的写法和颜色属性
577 0
HarmonyOS实战—Text组件宽高三种值的写法和颜色属性