用于更改用于计算元素宽度和高度的默认的 CSS 盒子模型。它有box-sizing、content-box和border-box三种取值。inherit指的是从父元素继承inherit表现形式,不再冗赘。box-sizing
1. 属性讲解
content-box
content-box默认值,也是css2.1中的盒子模型。在计算
width和
height时候,不计算
border、
padding和
margin。
高度、宽度都只是内容高度。
border-box
border-boxcss3新增。
width和
height属性包括内容,内边距和边框,但不包括外边距。
计算公式:
- width = width = border padding 内容宽度
- height = border padding 内容高度
2. 考虑盒子模型的margin
margin从上面可以知道,即时是
border-box也是不计算
margin,只是多余计算了
border和
padding。
因为border和padding都是盒子模型的一部分,但是margin标记的是盒子和盒子的间距。所以,
border-box的解释很符合常理。
问题来了,如果有时候一定要设置
,怎么做到自由控制来保证兼容?例如,我们下面要设置一个撑满页面的盒子元素,而且有外边距干扰,怎么做?margin
实现如下效果图:

代码:源码下载
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>yuanxin.me</title><style type="text/css">*{margin: 0;padding: 0;}#app {box-sizing: border-box; /* 指定计算方式 */margin: 10px; /* 外边距干扰 *//* 利用 css3 的 calc */width: calc(100vw - 2*10px);height: calc(100vh - 2*10px);}</style>
</head>
<body><div id="app"></div>
</body>
</html>
所以,当需要计算外边距(margin),可以配合css3中的四则运算(
calc
)来使用。
3. 使用建议
根据项目中的使用经验和w3c的建议,推荐将
属性设置为box-sizing。border-box
* {margin: 0;padding: 0;
}
div {box-sizing: border-box;
}
4. 关于
欢迎技术交流,引用请注明出处。
个人网站:godbmw.com
原文链接:border-sizing属性详解和应用
本文转载于:猿2048▶https://www.mk2048.com/blog/blog.php?id=0a0b1jb&title=border-sizing属性详解和应用