box-flex

语法:

box-flex<number>

默认值0

适用于:伸缩盒子元素

继承性:无

动画性:否

计算值:指定值

取值:

<number>
使用浮点数指定对象所分配其父元素剩余空间的比例。

说明:

设置或检索伸缩盒对象的子元素如何分配其剩余空间。
  • 效果类似于过渡版本和新版本的flex属性;
  • 示例:将一个容器分成6份,子对象a分1份,b分2份,c分3份

    HTML Code:

    <ul id="box">
    	<li>a</li>
    	<li>b</li>
    	<li>c</li>
    </ul>

    CSS Code:

    #box{display:box;width:240px;height:100px;margin:0;padding:10px;list-style:none;}
    #box li:nth-child(1){box-flex:1;}
    #box li:nth-child(2){box-flex:1;}
    #box li:nth-child(3){box-flex:2;}

    上面代码请自行加上-moz-,-webkit-之类的。box-flex生效需定义其父元素display为box或inline-box

  • 误区:注意box-flex只是动态分配父元素的剩余空间,而不是整个父元素的空间。如上例,父元素#box的宽度为240px,如果你认为a,b,c的宽度分别为60, 60, 120那么就错了,因为box-flex只是分配父元素的剩余空间而已,所以a,b,c所分到的应该是除内容外所剩余下来的宽度
  • 为了清晰所谓的剩余空间分配,对上例稍作修改,HTML Code不变

    CSS Code:

    #box{display:box;width:240px;height:100px;margin:0;padding:10px;list-style:none;}
    .box li{width:50px;padding:7px;}
    #box li:nth-child(1){box-flex:1;}
    #box li:nth-child(2){box-flex:1;}
    #box li:nth-child(3){box-flex:2;}

    从上面的代码,我们可以知道a,b,c的宽度分别为50+7*2=64px,三者加起来即192px,所以剩下的240-192=48px才是父元素的剩余空间,于是a,b,c按照设定的1:1:2来分配这48px,a分得12px,b分得12px,c分得24px,所以最终a=64+12=76px,b=64+12=76px,c=64+24=88px

  • 对应的脚本特性为boxFlex

兼容性:

  • 浅绿 = 支持
  • 红色 = 不支持
  • 粉色 = 部分支持
Values IE Firefox Chrome Safari Opera iOS Safari Android Browser Android Chrome
Basic Support 6.0-11.0 2.0-40.0-moz- 4.0-45.0-webkit- 6.0-8.0-webkit- 15.0-29.0-webkit- 6.0-8.3-webkit- 2.1-4.4.4-webkit- 18.0-42.0-webkit-

示例:

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号:画漫画的程序员,每天早上8点30分准时推送:前端前沿资讯、大厂面试题、程序员轶事、职场感悟等,一起进步!

JS中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。欢迎热爱技术的你一起加入交流与学习,JS中文网的使命是帮助开发者用代码改变世界