chrome浏览器默认是content-box,什么是content-box,我用最简单的语言解释给你听。
content-box就是用元素的width和height觉得元素的高宽,这就意味着元素的padding和border等不能算在width和height中。啥意识?简洁介绍一下。
- 元素的width和height决定元素的内容,padding和border的改变不能改变width和height的值。
直接上代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href=""/>
<style type="text/css">
.border-box{
height: 100px;
width: 300px;
padding: 20px;
background: skyblue;
box-sizing: content-box;
}
</style>
</head>
<body>
<div class="border-box">这是content-box的高度</div>
<div class="border-box">这是content-box的高度</div>
<div class="border-box">这是content-box的高度</div>
</body>
</html>
控制台元素结构如下图所示:
border-box就是用元素内容和padding和border一起决定width和height,啥意识,就是width和元素的内容以及padding和border相互制约。下面用几句话简洁解释一下。
- width和height改变,paddign和border不改变时,元素内容的宽高会发生相应的改变,改变的值就是width和height改变的值。
- paddign和border改变,width和height不改变时,元素内容的宽高会发生相应的改变,改变的值就是width和height改变的值。
- 元素内容的宽高等于:元素的宽高 - ( border + padding )
直接上代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href=""/>
<style type="text/css">
.border-box{
height: 100px;
width: 300px;
padding: 20px;
background: skyblue;
box-sizing: border-box;
}
</style>
</head>
<body>
<div class="border-box">这是border-box的高度</div>
<div class="border-box">这是border-box的高度</div>
<div class="border-box">这是border-box的高度</div>
</body>
</html>
控制台元素结构如下图所示:
在实际工作的场景和目的
我更喜欢用border-box,因为border-box更灵活一点,举个例子,我在业务中遇到一个问题,我的商品详情页的一个盒子是高度自适应的,为146px,但是在ie8浏览器上显示为146.8px,如何解决,如果对盒子设置
height:146px;
则会出现被撑高的情况,因为box-sizing默认为content-box,你给元素设置宽高,只是给元素内容设置宽高,你元素的总高度是heigtht + border + padding
所以就会出现撑高,解决方法就是给当前的盒子设置box-sizing: border-box
这样你设置高度为146px时,会默然将元素内容的高度进行相应减少来保证整体高度为146px,这个最大的好处就是你这个盒子有好几个,而且有不同的padding和border值,解决这个的最好的方法就是给盒子设置border-box