CSS 盒子模型

CSS盒模型

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

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

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

标准模型


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

IE模型


从上图可以看出,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详解

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,680评论 1 92
  • 前言 总括: 对于盒子模型,BFC,IFC和外边距合并等概念和问题的总结 原文地址:从CSS盒子模型说起 知乎专栏...
    秦至阅读 4,123评论 0 3
  • 1、W3c盒子模型 可以看到W3C盒子模型包括4分:margin,border,padding,content,其...
    fenerchen阅读 4,251评论 0 1
  • CSS盒子模型基本概念: 标准模型+IE模型 标准模型+IE模型区别1.计算高度,宽度的不同2.具体如图 标准盒子...
    唐卡豆子阅读 4,507评论 0 1
  • 在抄写材料的时候,突然发现很多人跟我一样身体勤快,思想懒惰,凡事只想着图省事不愿意动脑子,而不是从某件事情上可以得...
    凰之琰阅读 962评论 0 0