盒模型面试问题总结

一、谈一谈你对CSS盒模型的认识


专业的面试,一定会问 CSS 盒模型。对于这个题目,我们要回答一下几个方面:

(1)基本概念:content、padding、margin。

(2)标准盒模型、IE盒模型的区别。不要漏说了IE盒模型,通过这个问题,可以筛选一部分人。

(3)CSS如何设置这两种模型(即:如何设置某个盒子为其中一个模型)?如果回答了上面的第二条,还会继续追问这一条。

(4)JS如何设置、获取盒模型对应的宽和高?这一步,已经有很多人答不上来了。

(5)实例题:根据盒模型解释边距重叠。前四个方面是逐渐递增,第五个方面,却鲜有人知。

(6)BFC(边距重叠解决方案)或IFC。如果能回答第五条,就会引出第六条。BFC是面试频率较高的。

总结:以上几点,从上到下,知识点逐渐递增,知识面从理论、CSS、JS,又回到CSS理论。


二、接下来,我们把上面的六条,依次讲解

问题(1)content就是内容区域,padding是内边距,margin是外边距,width和height则要根据是什么模型决定

问题(2)标准盒模型和IE盒子模型

CSS盒模型和IE盒模型的区别:

在 标准盒子模型中,width 和 height 指的是内容区域的宽度和高度。增加内边距、边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸。

IE盒子模型中,width 和 height 指的是内容区域+border+padding的宽度和高度。

问题(3)CSS如何设置这两种模型:

 设置当前盒子为 标准盒模型(默认):     box-sizing: content-box;

 设置当前盒子为 IE盒模型 : box-sizing: border-box;

问题(4)JS如何设置、获取盒模型对应的宽和高

方式一:通过DOM节点的 style 样式获取:

(1)element.style.width/height;

       

111

       

222

       

缺点:通过这种方式,只能获取行内样式,不能获取内嵌的样式和外链的样式。

方式二(通用型)

// window.getComputedStyle(element).width/height;

   

111

       

222

       

这种方式能兼容 Chrome、火狐。是通用型方式。

方式三(IE独有的):

//element.currentStyle.width/height;

          var oDiv1 = document.getElementById("div1");

            console.log( oDiv1.currentStyle.width);

和方式二相同,但这种方式只有IE独有。获取到的是运行完之后的宽高(三种css样式都可以获取)。

方式四:

// element.getBoundingClientRect().width/height;

          var oDiv1 = document.getElementById("div1");

            console.log(oDiv1.getBoundingClientRect().width);

这种方式获得到的宽度是内容content+padding+border

此 api 的作用是:获取一个元素的绝对位置。绝对位置是视窗 viewport 左上角的绝对位置。

此 api 可以拿到四个属性:left、top、width、height。

上面的四种方式,要求能说出来区别,以及哪个的通用型更强。

问题(5)margin塌陷/margin重叠:

前端系统复习之CSS盒模型 - 李天下 - CSDN博客

你可能感兴趣的:(盒模型面试问题总结)