前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CSS3之flex兼容写法

CSS3之flex兼容写法

作者头像
py3study
发布2020-01-08 16:18:32
1.5K0
发布2020-01-08 16:18:32
举报
文章被收录于专栏:python3python3

很久不写博文,之前的长时间不上都关闭了,但随着工作时间长越来越长,对知识的积累和总结还真的是很重要的。所以奉劝码农们每天都还是要抽出来一点时间总结点东西,以后对你受益匪浅!!今天还是变谈CSS3里的flex怎么处理兼容的

flex是个非常好用的属性,如果说有什么可以完全代替 float 和 position ,那么肯定是非它莫属了,虽然现在低版本浏览器不支持,可是对于移动来说兼容性不是问题,可是在安卓4.3以后版本里。那就不好用了,今天咱们就说下如果写flex才能保证兼容性。

flex之所以有兼容性。是因为w3c从09到现在更新了很多次,所以有一些浏览器只是支持旧语法的书定方式,flex属性有很多种,今天主要说常用的等比设置和居中这两块

一、旧语法

代码语言:javascript
复制
.box{
    display: -moz-box;    /*Firefox*/
    display: -webkit-box; /*Safari,Opera,Chrome*/
    display: box;
}

2.容器属性

 1)box-pack box-pack属性总共有4个值:

代码语言:javascript
复制
.box{    box-pack: start | end | center | justify;
        /*主轴对齐:左对齐(默认) | 右对齐 | 居中对齐 | 左右对齐*/}

3.子元素属性

 box-flex 属性:

代码语言:javascript
复制
.item{
    -moz-box-flex: 1.0;    /*Firefox*/
    -webkit-box-flex: 1.0; /*Safari,Opera,Chrome*/
    box-flex: 1.0;}

二、新语法

  1.容器的display属性

代码语言:javascript
复制
.item{
    -moz-box-flex: 1;     /*Firefox*/
    -webkit-box-flex: 1;  /*Safari,Opera,Chrome*/
    box-flex: 1;
}
    
.box{                              /*行内flex*/
     display: -webkit-inline-flex; /*webkit*/
     display:inline-flex;
}

2.容器样式

代码语言:javascript
复制
.box{    flex-direction: row | row-reverse | column | column-reverse;    /*主轴方向:左到右(默认) | 右到左 | 上到下 | 下到上*/

    flex-wrap: nowrap | wrap | wrap-reverse;    /*换行:不换行(默认) | 换行 | 换行并第一行在下方*/

    flex-flow: <flex-direction> || <flex-wrap>;    /*主轴方向和换行简写*/

    justify-content: flex-start | flex-end | center | space-between | space-around;    /*主轴对齐方式:左对齐(默认) | 右对齐 | 居中对齐 | 两端对齐 | 平均分布*/

    align-items: flex-start | flex-end | center | baseline | stretch;    /*交叉轴对齐方式:顶部对齐(默认) | 底部对齐 | 居中对齐 | 上下对齐并铺满 | 文本基线对齐*/

    align-content: flex-start | flex-end | center | space-between | space-around | stretch;    /*多主轴对齐:顶部对齐(默认) | 底部对齐 | 居中对齐 | 上下对齐并铺满 | 上下平均分布*/}

3.子元素属性

代码语言:javascript
复制
.item{    order: <integer>;    /*排序:数值越小,越排前,默认为0*/

    flex-grow: <number>; /* default 0 */
    /*放大:默认0(即如果有剩余空间也不放大,值为1则放大,2是1的双倍大小,以此类推)*/

    flex-shrink: <number>; /* default 1 */
    /*缩小:默认1(如果空间不足则会缩小,值为0不缩小)*/

    flex-basis: <length> | auto; /* default auto */
    /*固定大小:默认为0,可以设置px值,也可以设置百分比大小*/

    flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]    /*flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto,*/

    align-self: auto | flex-start | flex-end | center | baseline | stretch;    /*单独对齐方式:自动(默认) | 顶部对齐 | 底部对齐 | 居中对齐 | 上下对齐并铺满 | 文本基线对齐*/}

兼容写法:

1.盒子的兼容写法 

代码语言:javascript
复制
.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+ */}

2.子元素的兼容写法:

代码语言:javascript
复制
.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的一定要写在最下面即可。所以上面的兼容写法应该是这样的才对

代码语言:javascript
复制
.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 */   
    
 }
代码语言:javascript
复制
.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- */       
  }

如果你不把握好这个先后顺序,总是调整不出来完整的兼容样式。  

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档