盒子模型:如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
.parent{
width: 1000px;
height: 400px;
background-color: yellow;
border: 2px solid blue;
}
.red{
width: 500px;
height: 300px;
border: 2px solid red;
padding:5px;
margin:10px;
float: left;
}
.black{
width: 400px;
height: 300px;
border: 2px solid black;
padding:10px;
margin:10px;
float: right;
}
</style>
</head>
<body>
<div class="parent">
<div class="red"></div>
<div class="black"></div>
</div>
</body>
</html>
蓝色边距的盒子:width:1000px
红色边距的盒子:width:500px,border:2px,margin:10px,padding:5px
它的总宽度为=width+border(左右)+margin(左右)+padding(左右)=534px
黑色边距的盒子:width:400px;border:2px,margin:10px,padding:10px;
它的总宽度为=width+border(左右)+margin(左右)+padding(左右)=444px
蓝盒子width>=红盒子+黑盒子
ps:里面所有的值加到一起一定不能大于父盒子的内容区的宽度width
总的宽度=内容区的宽度width+border(左右)+padding(左右)+margin(左右)
如果设置了浮动,不是正常的文档流,设置了一个margin-right:10px;另一个设置了margin-left:40px;要把所有的margin值相加,之间的距离是10+40=50px
如果不设置浮动,而是正常的文档流,设置了一个margin-bottom:10px,另一个设置了margin-top:40px;如果有叠加取叠加部分的最大值40
如图,下面那个盒子的margin-top会覆盖掉上方盒子的margin-bottom,代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
.red{
width: 500px;
height: 300px;
border: 2px solid red;
margin-bottom: 10px;
}
.black{
width: 400px;
height: 300px;
border: 2px solid black;
margin-top: 40px;
}
</style>
</head>
<body>
<div class="parent">
<div class="red"></div>
<div class="black"></div>
</div>
</body>
</html>
浏览器的兼容问题:
根据w3c的规范,元素内同占据的空间是由width属性设置的,而内容周围的padding和border是另外计算的。
但IE5.X和6在怪异模式下使用自己的非标准模式,这些浏览器的width属性不是内容的宽度,而是内同、内边距和边框的宽度的总和。
解决方法:不要给元素添加具体制定宽度的内边距,而尝试将内边距或外边距添加到元素的父元素和子元素。
IE8及更早IE版本不支持设置填充的框和边框的宽度属性。解决IE8和更早IE版本不兼容问题可在HTML页面设置<!DOCTYPE html>即可