盒模型有两种,一种是W3C标准盒模型,一种是怪异盒模型.
W3C盒模型的宽度和高度,指的是内容的宽度和高度
怪异盒模型的宽度和高度,指的是内容+padding+border
怪异盒模型适用IE6及以前的版本,通过去掉docutype来开启怪异模式
这个问题在前端面试中出现的频率很高,为css3中的重中之重
弹性盒模型应用范围很广,在web移动开发以及布局都有极其重要的地位
首先来看下面一段代码
HTML代码如下
<div id="main">
<div id="div1">div1</div>
<div id="div2">div2</div>
<div id="div3">div3</div>
</div>
css代码如下
#div1,#div2,#div3{
height: 300px;
}
#div1{
background: #ff0000;
}
#div2{
background: #00ff00;
}
#div3{
background: #ffff00;
}
此时运行的结果显示
然后在css样式加上
#main{
display: -webkit-box;
}
运行结果如图
div是块级元素,没加-webkit-box时,会以块级元素方式排列.当我们在父元素上加-webkit-box时,会变成以上这种方式排列,也可以通过-webkit-box-orient:vertical来实现块级元素排列方式
CSS部分样式改变如下
#main{
display: -webkit-box;
}
#div1,#div2,#div3{
height: 300px;
-webkit-box-flex: 1;
}
运行结果为
当改变浏览器大小时
改变每一个div的-webkit-box-flex的值
#main{
display: -webkit-box;
}
#div1,#div2,#div3{
height: 300px;
/*-webkit-box-flex: 1;*/
}
#div1{
background: #ff0000;
-webkit-box-flex: 1;
}
#div2{
background: #00ff00;
-webkit-box-flex: 2;
}
#div3{
background: #ffff00;
-webkit-box-flex: 3;
}
运行如图所示
所以,-webkit-box-flex是将父元素动态分成几份,即使改变浏览器的大小,所占份数也不会改变
CSS代码改变如下
#main{
display: -webkit-box;
margin-left: 200px;
}
运行结果
由此可知,弹性盒模型是将父元素剩余空间分份,将父元素的剩余空间进行动态分布.