语法:

  1. box-flex:<number>

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

html代码:

  1. <ul id="box">
  2. <li>a</li>
  3. <li>b</li>
  4. <li>c</li>
  5. </ul>

css代码:

  1. #box{
  2. display:-webkit-box;
  3. display:-moz-box;
  4. display:-ms-box
  5. display:box;
  6. width:240px;
  7. height:100px;
  8. margin:;
  9. padding:10px;
  10. list-style:none;
  11. color:#fff;
  12. }
  13. #box li:nth-child(1){
  14. -webkit-box-flex:;
  15. -moz-box-flex:;
  16. -ms-box-flex:;
  17. box-flex:;
  18. background:#000;
  19. }
  20. #box li:nth-child(2){
  21. -webkit-box-flex:;
  22. -moz-box-flex:;
  23. -ms-box-flex:;
  24. box-flex:;
  25. background:red;
  26. }
  27. #box li:nth-child(3){
  28. -webkit-box-flex:;
  29. -moz-box-flex:;
  30. -ms-box-flex:;
  31. box-flex:;
  32. background: grey;
  33. }

得到的结果如图所示:

注:其实上面的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代码:

  1. #box{
  2. display:-webkit-box;
  3. display:-moz-box;
  4. display:-ms-box
  5. display:box;
  6. width:240px;
  7. height:100px;
  8. margin:;
  9. padding:10px;
  10. list-style:none;
  11. color:#fff;
  12. }
  13. #box li{
  14. width:50px;
  15. padding:7px;
  16. }
  17. #box li:nth-child(1){
  18. -webkit-box-flex:;
  19. -moz-box-flex:;
  20. -ms-box-flex:;
  21. box-flex:;
  22. background:#000;
  23. }
  24. #box li:nth-child(2){
  25. -webkit-box-flex:;
  26. -moz-box-flex:;
  27. -ms-box-flex:;
  28. box-flex:;
  29. background:red;
  30. }
  31. #box li:nth-child(3){
  32. -webkit-box-flex:;
  33. -moz-box-flex:;
  34. -ms-box-flex:;
  35. box-flex:;
  36. background: grey;
  37. }

结果如图所示:

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

  1. #box{
  2. display:-webkit-box;
  3. display:-moz-box;
  4. display:-ms-box
  5. display:box;
  6. width:240px;
  7. height:100px;
  8. margin:;
  9. padding:10px;
  10. list-style:none;
  11. color:#fff;
  12. }
  13. #box li{
  14. padding:7px;
  15. }
  16. #box li:nth-child(1){
  17. -webkit-box-flex:;
  18. -moz-box-flex:;
  19. -ms-box-flex:;
  20. box-flex:;
  21. background:#000;
  22. }
  23. #box li:nth-child(2){
  24. -webkit-box-flex:;
  25. -moz-box-flex:;
  26. -ms-box-flex:;
  27. box-flex:;
  28. background:red;
  29. }
  30. #box li:nth-child(3){
  31. -webkit-box-flex:;
  32. -moz-box-flex:;
  33. -ms-box-flex:;
  34. box-flex:;
  35. background: grey;
  36. }

html代码:

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

结果如图所示:

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

  1. #box li{
  2. width:1%;
  3. padding:7px;
  4. }

或者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. mysql 5.6到percona 5.6小版本升级

    假设原来是mysql 5.6.19社区版,现在要升级到percona server 5.6.30. 对于大的数据库来说,采用mysqldump方式进行迁移太花费时间了,可采用新安装加载原来数据库的方式 ...

  2. 【GOF23设计模式】组合模式

    来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_组合模式.树状结构.杀毒软件架构.JUnite底层架构.常见开发场景 package com.test.composite ...

  3. RHEL7管道与重定向

    文件描述符 可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作 用户可以自定义文件描述符范围是:3-num,这个最大数字,跟 ...

  4. ABAP中Conversion Routine示例

          在SAP的Domain定义中,Output Length下面有个Convers. routine的标识,这是SAP用来进行输入输出转换的.我们知道,屏幕上的I/O字段都是字符串形式的,而数 ...

  5. DevExpress中透明玻璃效果

    Aero玻璃效果 下图左是DevExpress无玻璃效果,图右是Windows自带玻璃效果. Windows Aero 是从 Windows Vista 开始使用的新型用户界面,透明玻璃感让用户一眼贯 ...

  6. SharePoint 2013 中代码创建列表查阅项字段

    1.首先,打开VS创建两个List Definition,分别是Address和City,如下图: 2.City列表里修改Title为City Name,其实内部名称还是Title,注意一下: 3.给 ...

  7. SharePoint 2013 排错之"Code blocks are not allowed in this file"

    今天,设置页面布局的自定义母版页时,设置完了以后保存,然后预览报错,错误如下截图:删掉自定义母版页的MasterPageFile属性,页面依然报错:感觉甚是奇怪,因为有版本控制,还原为最初的版本,依然 ...

  8. iOS网络-05-AFNetwoking原理及常用操作

    AFN的六大模块 NSURLConnection,主要对NSURLConnection进行了进一步的封装,包含以下核心的类: AFURLConnectionOperation AFHTTPReques ...

  9. 很好的UI动效设计参考

    toolBar下拉:

  10. fragment 切换

    1.Fragment的添加方式 FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.hide ft.show ft ...