语法:

box-flex:<number>

其中number取值:使用浮点数指定对象所分配其父元素剩余空间的比例。
设置或检索伸缩盒对象的子元素如何分配其剩余空间。(伸缩盒最老版本)

html代码:

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

css代码:

#box{
display:-webkit-box;
display:-moz-box;
display:-ms-box
display:box;
width:240px;
height:100px;
margin:;
padding:10px;
list-style:none;
color:#fff;
}
#box li:nth-child(1){
-webkit-box-flex:;
-moz-box-flex:;
-ms-box-flex:;
box-flex:;
background:#000;
}
#box li:nth-child(2){
-webkit-box-flex:;
-moz-box-flex:;
-ms-box-flex:;
box-flex:;
background:red;
}
#box li:nth-child(3){
-webkit-box-flex:;
-moz-box-flex:;
-ms-box-flex:;
box-flex:;
background: grey;
}

得到的结果如图所示:

注:其实上面的css代码中-ms-box-flexbox-flex可以省略,为什么这么说呢,IE6-IE11的浏览器不支持box-flex,其它内核的浏览器都需要加上前缀如-webkit--moz-浏览器才解析这个属性。这儿写上是为告诉大家,为了让css3属性兼容,一般都这么写完整而已。下面会说一下浏览器的兼容。

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

为了清晰所谓的剩余空间分配,对上例稍作修改,HTML Code不变

css代码:

#box{
display:-webkit-box;
display:-moz-box;
display:-ms-box
display:box;
width:240px;
height:100px;
margin:;
padding:10px;
list-style:none;
color:#fff;
}
#box li{
width:50px;
padding:7px;
}
#box li:nth-child(1){
-webkit-box-flex:;
-moz-box-flex:;
-ms-box-flex:;
box-flex:;
background:#000;
}
#box li:nth-child(2){
-webkit-box-flex:;
-moz-box-flex:;
-ms-box-flex:;
box-flex:;
background:red;
}
#box li:nth-child(3){
-webkit-box-flex:;
-moz-box-flex:;
-ms-box-flex:;
box-flex:;
background: grey;
}

结果如图所示:

从上面的代码,我们可以知道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

由上面的代码引入了一个思考,如果我没有给li设置宽度,并且当子元素的内容过多,会出现什么问题,那就是设置的box-flex会被撑开,根据上面来写个例子,如下:
css代码:

#box{
display:-webkit-box;
display:-moz-box;
display:-ms-box
display:box;
width:240px;
height:100px;
margin:;
padding:10px;
list-style:none;
color:#fff;
}
#box li{
padding:7px;
}
#box li:nth-child(1){
-webkit-box-flex:;
-moz-box-flex:;
-ms-box-flex:;
box-flex:;
background:#000;
}
#box li:nth-child(2){
-webkit-box-flex:;
-moz-box-flex:;
-ms-box-flex:;
box-flex:;
background:red;
}
#box li:nth-child(3){
-webkit-box-flex:;
-moz-box-flex:;
-ms-box-flex:;
box-flex:;
background: grey;
}

html代码:

<ul id="box">
<li>这个内容过多怎么办?有问题没有?</li>
<li>b</li>
<li>c</li>
</ul>

结果如图所示:

那要怎么解决呢?
就是给li添加一个width:1%,代码如下:

#box li{
width:1%;
padding:7px;
}

或者width:1px也是可以的。结果如图所示:

兼容性如图所示:

参考地址:《css3参考手册:box-flex》

最后说明下:

  1. display:box,是2009的flexbox版本
  2. display:flexbox,或者函数flex(),是2011年发布的
  3. display:flex,是目前正在使用的2012年发布的标准

css3中box-flex的使用的更多相关文章

  1. 关于css3中的flex

    参考几篇文章: Flex 布局语法教程 IE10中的Flexible Box("Flexbox")布局 “老”的Flexbox和“新”的Flexbox 一个可以练习的地方: NEW ...

  2. 浅谈CSS3中display属性的Flex布局

    浅谈CSS3中display属性的Flex布局   最近在学习微信小程序,在设计首页布局的时候,新认识了一种布局方式display:flex 1 .container { 2 display: fle ...

  3. CSS3 弹性盒子(Flex Box)

    1 CSS3 弹性盒子(Flex Box) 1 http://caniuse.com/#search=flex%20box https://www.w3.org/TR/css-flexbox-1/ C ...

  4. CSS3中flexbox如何实现水平垂直居中和三列等高布局

    最近这些天都在弥补css以及css3的基础知识,在打开网页的时候,发现了火狐默认首页上有这样一个东西.

  5. css3中的布局相关样式

    web页面中的布局是指在页面中如何对标题.导航栏.主要内容.脚注.表单等各种构成要素进行合理编辑.在css3之前,主要使用float属性或position属性进行页面中的简单布局,但是也存在一些缺点, ...

  6. CSS3中的Flexbox弹性布局(一)

    CSS3引入了一种新的布局模式——Flexbox布局,即伸缩布局盒模型(Flexible Box),用来提供一个更加有效的方式制定.调整和分布一个容器里项目布局,即使它们的大小是未知或者动态的,这里简 ...

  7. CSS3中的弹性盒子模型

    介绍 在css2当中,存在标准模式下的盒子模型和IE下的怪异盒子模型.这两种方案表示的是一种盒子模型的渲染模式.而在css3当中,新增加了弹性盒子模型,弹性盒子模型是一种新增加的强大的.灵活的布局方案 ...

  8. CSS3中DIV水平垂直居中-2(3)

    用到CSS3中display的新属性. HTML <div class="parent"> </div> CSS html,body{ width: 100 ...

  9. CSS3中新出现的技术

    CSS3中新出现的技术 CSS媒体查询 媒体查询 包含了一个媒体类型和至少一个使用如宽度.高度和颜色等媒体属性来限制样式表范围的表达式.CSS3加入的媒体查询使得无需修改内容便可以使样式应用于某些特定 ...

  10. CSS3中的变形处理(transform)属性

    在CSS3中,可以利用transform功能来实现文字或图像的旋转.扭曲.缩放.位移.矩阵.原点这六种类型的变形处理,下面将详细讲解transform的使用. 变形--旋转 rotate() div. ...

随机推荐

  1. 关于我的OI生涯(AFO){NOIP2016 后}

    这篇我就随意写啦~不用统一的“题解”形式.♪(^∀^●)ノ 也分好几次慢慢更吧~ 对于NOIP2016的总结,我本想善始善终back回,但是心情不足以支撑我,那就只能有始有终了......下面进入我的 ...

  2. Oracle锁表与解锁

    查看锁表语句:方法1:    select sess.sid,           sess.serial#,           lo.oracle_username,           lo.o ...

  3. 获取用户的真实ip

    常见的坑有两个: 一.获取的是内网的ip地址.在nginx作为反向代理层的架构中,转发请求到php,java等应用容器上.结果php获取的是nginx代理服务器的ip,表现为一个内网的地址.php获取 ...

  4. HttpController的激活

    Web API调用请求的目标是定义在某个HttpController类型中的某个Action方法,所以消息处理管道的最终需要激活目标HttpController对象.调用请求的URI会携带目标Http ...

  5. SharpGL学习笔记(十三) 光源例子:环绕二次曲面球体的光源

    这是根据徐明亮<OpenGL游戏编程>书上光灯一节的一个例子改编的. 从这个例子可以学习到二次曲面的参数设置,程序中提供了两个画球的函数,一个是用三角形画出来的,一个是二次曲面构成的. 你 ...

  6. Ansible用于网络设备管理 part 0 安装和登录网络设备

    真实在是累了,但是又怕第二天早上又忘掉,在这先大概写写. 安装: http://www.tecmint.com/install-and-configure-ansible-automation-too ...

  7. jquery实现页面控件拖动效果js代码

    ;(function($) { var DragPanelId = "divContext"; var _idiffx = 0; var _idiffy = 0; var _Div ...

  8. 浅析对象访问属性的"."和"[]"方法区别

    在JavaScript中通常使用”."运算符来存取对象的属性的值.或者使用[]作为一个关联数组来存取对象的属性.但是这两种方式有什么区别了? 例如,读取object中的property属性值 ...

  9. Interoperability between Java and SharePoint 2013 on Premises

    http://ctp-ms.blogspot.com/2012/12/interoperability-between-java-and.html   Introduction One of the ...

  10. Hibernate的各种关联关系

    1.有多中映射 方法 //用XML配置时 <mapping resource="com/liugch/bean/Student.hbm.xml" /> //用注解配置时 ...