css盒模型

126 阅读3分钟

先看一道题目:谈谈你对CSS盒模型的理解,思考应该如何回答...

涉及知识点(层层递进):

基本概念:标准模型+ IE模型(区别) JS如何设置获取盒子模型对应的宽和高 实例题(根据盒模型解释边距重叠) BFC(边距重叠解决方案) 基本概念

所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。

CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。

盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。

下面的图片说明了盒子模型(Box Model):

盒子模型

不同部分的说明:

margin(外边距) - 清除边框外的区域,外边距是透明的。 border(边框) - 围绕在内边距和内容外的边框。 padding(内边距) - 清除内容周围的区域,内边距是透明的。 content(内容) - 盒子的内容,显示文本和图像。 盒子在标准流中的定位原则:

margin控制的是盒子与盒子之间的距离,padding存在于盒子的内部它不涉及与其他盒子之间的关系和相互影响问题,因此要精确控制盒子的位置,就必须对margin有更深入的了解。

(1)行内元素之间的水平margin

当两个行内元素紧邻时,它们之间的距离为第一个元素的右margin加上第二元素的左margin。

(2)块级元素之间的竖直margin

两个竖直排列的块级元素,它们之间的垂直距离不是上边的第一个元素的下margin和第二个元素的上margin的总和,而是两者中的较大者。这在实际制作网页的时候要特别注意。

(3)嵌套盒子之间的margin

这时子块的margin以父块的content为参考进行排列。

(4)margin设为负值

会使设为负数的块向相反的方向移动,甚至会覆盖在另外的块上。

标准盒模型和IE盒模型的区别

标准盒模型

标准模型

标准盒模型(内容盒子):宽高都指content,不包括padding和border;

设置标准盒模型:box-sizing:content-box; 一般在现代浏览器中使用的都是 标准盒模型content-box。

IE盒模型

IE盒模型

它所说的width一般只包含内容,并且盒子的大小会以内容优先,自动扩展,子元素可以撑开父元素.

IE盒模型又称怪异盒模型(边框盒子):宽高是指content+padding+border的总的宽高;

设置IE盒模型:box-sizing:border-box; 一般在IE浏览器中默认为这种怪异盒模型,但是由于其自身的特殊性,手机页面中也有使用怪异盒模型。怪异盒模型中,父元素的盒模型确定,子元素无法撑开父元素的盒模型。