CSS 盒子模型

CSS盒模型

当你的浏览器展现一个元素时,这个元素会占据一定的空间。

CSS 框模型 (Box Model) 规定了元素框处理元素内容(content)、内边距(padding)、边框(border) 和 外边距(margin) 的方式。

CSS盒模型分为标准盒模型和IE盒模型两种。

标准模型

CSS 盒子模型_第1张图片

从上图可以看出,标准模型中width和height只包含content。

IE模型

CSS 盒子模型_第2张图片

从上图可以看出,IE模型中width和height是包括border、padding、content。

如何设置盒模型

通过CSS中box-sizing这个属性

  • content-box:默认值,标准盒模型
  • border-box: IE盒模型
  • inherit: 从父元素继承

如何获取盒模型对应的宽和高

通过JS获取盒模型对应的宽和高,有以下几种方法:
为了方便书写,以下用dom来表示获取的HTML的节点。

  • dom.style.width/height

这种方式只能取到dom元素内联样式所设置的宽高,也就是说如果该节点的样式是在style标签中或外联的CSS文件中设置的话,通过这种方法是获取不到dom的宽高的。

  • dom.currentStyle.width/height

这种方式获取的是页面渲染完成后的结果,就是说不管是哪种方式设置的样式,都能获取到。但是只有IE浏览器支持。

  • window.getComputedStyle(dom).width/height

这种方式的原理和2是一样的,这个可以兼容更多的浏览器,通用性好一些。

  • dom.getBoundingClientRect().width/height

这种方式是根据元素在视窗中的绝对位置来获取宽高的

  • dom.offsetWidth/offsetHeight

最常用的,也是兼容最好的。

边距重叠

普通文档流中框的垂直外边距会发生外边距合并,合并后的外边距高度是外边距中较高的那个边距值。具体可以参考css 外边距合并

解决边距重叠

通过使用BFC可以解决边距重叠问题
BFC问题具体看另一篇文章BFC详解

你可能感兴趣的:(CSS 盒子模型)