前端面试之盒子模型(标准盒模型、怪异盒模型)

1.CSS盒子模型(Box Model)

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

CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:外边距(margin)、边框(border)、内边距(padding)、实际内容(content)四个属性。

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

CSS盒子模型(Box model)就是在网页设计中经常用到的CSS技术所使用的一种思维模型。网页中所有元素都具备以下四个属性:

  • 内容(content),也就是元素的 width、height
  • 内边距(padding)
  • 边框(border)
  • 外边距(margin)

这些属性我们可以用日常生活中的常见事物——盒子作一个比喻来理解,所以叫它盒子模式。

2.盒子模型能够为我们解决什么问题

盒子模型主要是针对页面布局的时候来使用,它规范我们的页面的所有元素的一个布局标准是由外向内进行布局。

盒子模型由外向内:margin(外边距)—>border(边框)---->padding(内边距)---->content(元素)

上面所说的盒子模型是基于W3C标准的盒子模型,大多数浏览器都采用标准盒模型。而还有一种怪异盒子模型,这种怪异模式主要表现在IE内核的浏览器。

3.W3C盒子模型(标准盒模型)和IE盒子模型(怪异盒模型)

盒模型宽度和高度和我们平常所说的物体的宽度和高度理解是不一样的,css内定义的宽(width)和高(height),指的是填充以里的内容范围。
因此一个元素实际宽度(盒子的宽度)=左边界+左边框+左填充+内容宽度+右填充+右边框+右边界。

W3C盒子模型(标准盒模型)

在标准模式下,一个块的总宽度 = 内容的width + padding(左右) + border(左右) + margin(左右)

标准模式:盒子总宽度/高度 = 内容区宽度 /高度+padding+border + margin。

IE盒子模型(怪异盒模型)

在怪异模式下,一个块的总宽度 = 内容的width + margin(左右)(这里的width包含了padding(左右)和border(左右)的值)

怪异模式:盒子总宽度/高度=width/height+margin。

两种模式的转换(通过box-sizing)

box-sizing中比较常用的两个属性值为 content-boxborder-box ,它可以改变盒子模型的解析计算模式,可以参考上面的代码案例。

  • 当设置box-sizing:content-box时,采用标准模式进行计算,默认就是这种模式;
  • 当设置box-sizing:border-box时,采用怪异模式进行计算;

4.盒子模型

边框

盒子模型的边框就是围绕着内容及补白的线,这条线你可以设置它的粗细、样式和颜色(边框三个属性)。

注意:

1、border-style(边框样式)常见样式有:
dashed(虚线)|dotted(点线)| solid(实线)。
2、border-color(边框颜色)中的颜色可设置为十六进制颜色,如:
border-color:#888;//前面的井号不要忘掉。
3、border-width(边框宽度)中的宽度也可以设置为:
thin| medium|thick(但不是很常用),最常还是用象素(px)。

填充

元素内容与边框之间是可以设置距离的,称之为“填充”。

边界

元素与其它元素之间的距离可以使用边界(margin)来设置。边界也是可分为上、右、下、左。

总结一下:
paddingmargin的区别,padding在边框里,margin在边框外。

5.CSS3指定盒子模型种类

box-sizing 属性允许您以特定的方式定义匹配某个区域的特定元素。

box-sizing: content-box;//宽度和高度分别应用到元素的内容框。在宽度和高度之外绘制元素的内边距和边框。

box-sizing: border-box;// 为元素设定的宽度和高度决定了元素的边框盒。就是说,为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。

box-sizing: inherit;// 规定应从父元素继承 box-sizing 属性的值。

即box-sizing属性可以指定盒子模型种类,content-box指定盒子模型为W3C(标准盒模型),border-box为IE盒子模型(怪异盒模型)。

6.两种模式下如何解决样式的兼容性问题

建议不要给元素添加具有指定宽度的内边距,而是尝试将内边距或外边距添加到元素的父元素和子元素。

-box为IE盒子模型(怪异盒模型)。*

6.两种模式下如何解决样式的兼容性问题

他们之间的相同点和不同点其实也很容易看得出来:

相同点:都是由margin ,border,padding,content组成

不同点::计算宽/高度方法的不同,标准模式下盒子的总宽度是由margin,padding,border,content的相加得来;怪异模式下:总宽度是由content减去padding、border得来的。

建议不要给元素添加具有指定宽度的内边距,而是尝试将内边距或外边距添加到元素的父元素和子元素。

你可能感兴趣的:(前端面试)