用于更改用于計算元素寬度和高度的默認的 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-box
css3
新增。
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屬性詳解和應用