css3中box-flex的使用
语法:
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-flex
与box-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》
最后说明下:
display:box
,是2009的flexbox版本display:flexbox
,或者函数flex(),是2011年发布的display:flex
,是目前正在使用的2012年发布的标准
css3中box-flex的使用的更多相关文章
- 关于css3中的flex
参考几篇文章: Flex 布局语法教程 IE10中的Flexible Box("Flexbox")布局 “老”的Flexbox和“新”的Flexbox 一个可以练习的地方: NEW ...
- 浅谈CSS3中display属性的Flex布局
浅谈CSS3中display属性的Flex布局 最近在学习微信小程序,在设计首页布局的时候,新认识了一种布局方式display:flex 1 .container { 2 display: fle ...
- CSS3 弹性盒子(Flex Box)
1 CSS3 弹性盒子(Flex Box) 1 http://caniuse.com/#search=flex%20box https://www.w3.org/TR/css-flexbox-1/ C ...
- CSS3中flexbox如何实现水平垂直居中和三列等高布局
最近这些天都在弥补css以及css3的基础知识,在打开网页的时候,发现了火狐默认首页上有这样一个东西.
- css3中的布局相关样式
web页面中的布局是指在页面中如何对标题.导航栏.主要内容.脚注.表单等各种构成要素进行合理编辑.在css3之前,主要使用float属性或position属性进行页面中的简单布局,但是也存在一些缺点, ...
- CSS3中的Flexbox弹性布局(一)
CSS3引入了一种新的布局模式——Flexbox布局,即伸缩布局盒模型(Flexible Box),用来提供一个更加有效的方式制定.调整和分布一个容器里项目布局,即使它们的大小是未知或者动态的,这里简 ...
- CSS3中的弹性盒子模型
介绍 在css2当中,存在标准模式下的盒子模型和IE下的怪异盒子模型.这两种方案表示的是一种盒子模型的渲染模式.而在css3当中,新增加了弹性盒子模型,弹性盒子模型是一种新增加的强大的.灵活的布局方案 ...
- CSS3中DIV水平垂直居中-2(3)
用到CSS3中display的新属性. HTML <div class="parent"> </div> CSS html,body{ width: 100 ...
- CSS3中新出现的技术
CSS3中新出现的技术 CSS媒体查询 媒体查询 包含了一个媒体类型和至少一个使用如宽度.高度和颜色等媒体属性来限制样式表范围的表达式.CSS3加入的媒体查询使得无需修改内容便可以使样式应用于某些特定 ...
- CSS3中的变形处理(transform)属性
在CSS3中,可以利用transform功能来实现文字或图像的旋转.扭曲.缩放.位移.矩阵.原点这六种类型的变形处理,下面将详细讲解transform的使用. 变形--旋转 rotate() div. ...
随机推荐
- IOC容器中bean的生命周期
一.Bean的生命周期 Spring IOC容器可以管理Bean的生命周期,允许在Bean生命周期的特定点执行定制的任务. Spring IOC容器对Bean的生命周期进行管理的过程如下: (1).通 ...
- 【Effective Java】4、覆盖equals时请遵守通用约定
package cn.xf.cp.ch02.item8.transitivity; public class Point { private final int x; private final in ...
- 阿里云主机上安装jdk
今天继续安装jdk到阿里云服务上,大家要看一下阿里云是32位还是64位的,如果是32位下载32位的包,如果是64位的下载64位的包 我的就是64位的,开始我还不知道是怎么区分32/64位的,原来X64 ...
- 【OpenCV & CUDA】OpenCV和Cuda结合编程
一.利用OpenCV中提供的GPU模块 目前,OpenCV中已提供了许多GPU函数,直接使用OpenCV提供的GPU模块,可以完成大部分图像处理的加速操作. 基本使用方法,请参考:http://www ...
- Android5.0新特性——全新的动画(animation)
全新的动画 在Material Design设计中,为用户与app交互反馈他们的动作行为和提供了视觉上的连贯性.Material主题为控件和Activity的过渡提供了一些默认的动画,在android ...
- [ASP.NET MVC] ASP.NET Identity学习笔记 - 原始码下载、ID型别差异
[ASP.NET MVC] ASP.NET Identity学习笔记 - 原始码下载.ID型别差异 原始码下载 ASP.NET Identity是微软所贡献的开源项目,用来提供ASP.NET的验证.授 ...
- docker 使用
https://www.digitalocean.com/community/tutorials/how-to-use-the-digitalocean-docker-application http ...
- CSS通过边框border-style来写小三角
<!DOCTYPE html> /*直接复制代码即可在浏览器验证*/ <html> <head lang="en"> <meta char ...
- [ javascript css clip ] javascript css clip 的奇思妙想之文字拼接效果
语法: clip : auto | rect ( number number number number ) 参数: auto : 对象无剪切 rect ( number number numbe ...
- Jsoup解析Html中文文档
jsoup 简介Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目,我曾经在 IBM DW 上发表过两篇关于 htmlparser 的文章,分别是:从 HTM ...