一、CSS盒子模型定义
CSS盒子模型就是在网页设计中经常用到的CSS技术所使用的一种思维模型。设计中常听的属性名:内容(content)、内边距(padding)、边框(border)、外边距(margin), CSS盒子模型都具备这些属性。这些属性我们可以用日常生活中的常见事物——盒子作一个比喻来理解,所以叫它盒子模型。
下面的图片说明了盒子模型 (Box Model):
不同部分的说明:
- Margin(外边距):外边距位于盒子的最外围,是添加在边框外周围的空间。外边距使盒子之间不会紧凑地连接在一起,是CSS 布局的一个重要手段;
- Border(边框):边框是环绕内容区和填充的边界。边框的属性有border-style、border-width和border-color 以及综合了以上三类属性的快捷边框属性 border;
- Padding(内边距):内边距是内容区和边框之间的空间。内边距的属性有五种 ,即padding -top、padding -bottom、padding -left、padding-right 以及综合了以上四种方向的快捷填充属性padding;
- Content(内容):内容区是盒子模型的中心,它呈现了盒子的主要信息内容,这些内容可以是文本、图片等多种类型。
要确保在所有浏览器中正确设置元素的宽度和高度,需要了解盒子模型以及其在不同浏览器中的工作方式。
提示:在盒模型中,外边距可以是负值,而且在很多情况下都要使用负值的外边距。
二、元素宽度和高度
当指定一个元素的宽度和高度属性时,实际上只设置了内容区域的宽度和高度。然而,要获得完整尺寸的元素,您还需要考虑到填充(padding)、边框(border)和边距(margin)。
下面的例子中的元素的总宽度为 300px:
width:250px; padding:10px; border:5px solid gray; margin:10px;
计算:
250px (宽)+ 20px (左 + 右填充)+ 10px (左 + 右边框)+ 20px (左 + 右边距)= 300px
例如只有 250 像素的空间,设置总宽度为 250 像素的元素:
width:220px; padding:10px; border:5px solid gray; margin:0px;
最终元素的总宽度计算公式:
总元素的宽度=宽度+左填充+右填充+左边框+右边框+左边距+右边距
元素的总高度最终计算公式:
总元素的高度=高度+顶部填充+底部填充+上边框+下边框+上边距+下边距
三、浏览器兼容性
一旦为页面设置了适当的文档类型定义(DTD),大多数浏览器将按照标准的盒子模型来呈现内容。然而,早期的 IE 5 和 6 浏览器在怪异模式下使用自己的非标准盒子模型,导致元素的宽度计算方式与标准规范不同。在这些浏览器中,宽度属性包括了内容、内边距和边框的宽度。
虽然有一些方法可以解决这个问题,但目前最好的解决方案是回避这个问题。具体做法是避免给元素添加指定宽度的内边距,而是尝试将内边距或外边距添加到元素的父元素或子元素上。对于 IE8 及更早版本,由于不支持边框和填充的宽度属性设定,解决兼容性问题的最佳方法是在 HTML 页面的开头声明文档类型为 <!DOCTYPE html>。
通过这些简单的修改,可以确保元素在各种浏览器中正确呈现,并提高页面的兼容性。