语法:

  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. SQL索引学习-聚集索引

    这篇接着我们的索引学习系列,这次主要来分享一些有关聚集索引的问题.上一篇SQL索引学习-索引结构主要是从一些基础概念上给大家分享了我的理解,没有实例,有朋友就提到了聚集索引的问题,这里列出来一下: 其 ...

  2. C#中List<T>对象的深度拷贝问题

    一.List<T>对象中的T是值类型的情况(int 类型等) 对于值类型的List直接用以下方法就可以复制: List<T> oldList = new List<T&g ...

  3. linux 查看占用内存/CPU最多的进程

    可以使用一下命令查使用内存最多的5个进程 ps -aux | sort -k4nr | head -n 5 或者 top (然后按下M,注意大写) 可以使用一下命令查使用CPU最多的5个进程 ps - ...

  4. jQuery Flipping Gallery 翻转画廊

    在线实例 简单配置 翻转方向 鼠标滚动 自动播放 绑定事件 使用方法 <div class="main"> <div class="page_conta ...

  5. 关于setInterval和setTImeout中的this指向问题

    前些天在练习写一个小例子的时候用到了定时器,发现在setInterval和setTimeout中传入函数时,函数中的this会指向window对象,如下例: var num = 0; function ...

  6. CSS的一些小事

    1.什么时候能将零散的图片整合成一张大图,达到减少请求数的作用? 答:整合进大图的图片是被设置no-repeat用的,如果是repeat-x.repeat-y就不可以. 2.E + F 选择紧贴在E元 ...

  7. SeismicPro地震剖面显示程序

    SeismicPro是一个地震剖面显示软件,可从标准SEGY地震数据体中抽取纵测线和横测线的二维剖面,并以波形.变面积和变密度等多种方式进行专业化显示,可进行一键式显示方式切换,并可进行定制开发叠加井 ...

  8. 浅谈Hex编码算法

    一.什么是Hex 将每一个字节表示的十六进制表示的内容,用字符串来显示. 二.作用 将不可见的,复杂的字节数组数据,转换为可显示的字符串数据 类似于Base64编码算法 区别:Base64将三个字节转 ...

  9. 【读书笔记】iOS-UIWindow-密码框

    一,工程结构,如下图所示: 二,代码 PasswordInputWindow.h #import <UIKit/UIKit.h> @interface PasswordInputWindo ...

  10. Swift面向对象基础(上)——Swift中的枚举

    Swift中枚举 学习笔记来自<极客学院> import Foundation /**********1*Swift定义枚举的语法格式*************/ /* enum 枚举名 ...