CSS盒子模型
2019-10-18 本文已影响0人
西瓜鱼仔
CSS 盒子模型(Box Model)
所有HTML元素都可以看作盒子。
CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。
下面图片可以说明盒子模型结构:
![](https://img.haomeiwen.com/i19669663/5448d133b8806b01.png)
- Margin(外边距):border边框到父元素容器的距离。
- Border(边框):围绕在内边距和内容外的边框。
- Padding(内边距) :内容到border边框的距离。
- Content(内容) :盒子的内容,显示文本和图像。
如何计算一个元素的宽度和高度
重要:当指定一个CSS元素的宽度和高度属性时,你只是设置内容区域的宽度和高度。要知道,完全大小的元素,还必须添加填充,边框和边距。
示例:
div {
width: 300px;
border: 25px solid green;
padding: 25px;
margin: 25px;
}
让我们计算一下这个DIV的实际总宽度:
300px(内容宽度)+ 50px(左+右内边距宽度)+ 50px(左+右边框宽度)+50(左+右外边距宽度)= 450px
- 元素的实际总宽度计算公式
总宽度 = 内容宽度 + 左内边距 + 右内边距 + 左边框 + 右边框 + 左边距 + 右边距 - 元素的实际总高度计算公式
总高度=内容高度 + 上内边距 + 下内边距 + 上边框 + 下边框 + 上边距 + 下边距
浏览器的兼容性问题
根据 W3C 的规范,元素内容占据的空间是由 width 属性设置的,而内容周围的 padding 和 border 值是另外计算的。
然而,IE5.X 和 6 在怪异模式中使用自己的非标准模型。这些浏览器的 width 属性不是内容的宽度,而是内容、内边距和边框的宽度的总和。
虽然有方法解决这个问题。但是目前最好的解决方案是回避这个问题。也就是,不要给元素添加具有指定宽度的内边距,而是尝试将内边距或外边距添加到元素的父元素和子元素。