# 什么是CSS盒模型
css盒模型由里到外包括: content(内容)、padding(内边距)、border(边框)、margin(外边框)四个部分
css盒模型有两种:标准模型(浏览器模型) + IE模型
# 标准模型 + IE模型的区别
IE盒模型与W3C盒模型的唯一区别就是元素的宽度,元素的width = border + padding + content
WARNING
标准盒子模型(content-box): 内容就是盒子的边界
IE盒子模型(border-box): 边框才是盒子模型
标准盒子模型(content-box): 元素的宽度width = 内容高度
IE盒子模型(border-box): 元素的宽度width = 内容高度 + padding + border
CSS如何设置两种盒模型
/* 在不设置box-sizing的情况下,box-sizing 默认是(标准盒子)content-box . */ /* 标准盒模型 */ box-sizing: content-box; /* IE模型 */ box-sizing: border-box;JS如何设置/获取盒模型对应宽高
dom.style.width/height // 缺点:仅适用于内联样式的 dom.currentStyle.width/height //优点:获取渲染之后的运行的结果,相对更准确 //缺点:只有IE浏览器支持 window.getComputedStyle(dom).width/height //优点:原理和2相同,但兼容性更好 dom.getBoundingClientRect().width/height //原理同上,经常用于计算元素的绝对位置(根据视窗左顶点获得),getBoundingClientRect()方法可获得四个值:left/top/width/height
# 根据盒模型
什么是BFC
BFC是块级格式化上下文的意思。它是CSS 2.1规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用。
触发BFC的条件
- 浮动元素float值不为none
- 定位元素postion值不为static和absolute
- display属性值为flex、inline-block、table、table-cell等于table相关的值
- overflow值不为visible。 (overflow值为hidden/auto/scroll设置这些属性的box都会产生BFC)
BFC原理
- 在BFC这个元素垂直方向的边距会发生重叠(垂直方向上地距离由margin决定,在同一个BFC的box 中,相邻的两个box的边距会重叠)
- BFC的区域不会float元素的box重叠
- BFC在页面上是一个独立的容器,其内外的元素不会相互影响
- 计算BFC高度时,浮动元素参与计算
常用应用场景
清除浮动
外边距合并问题:解决兄弟元素垂直方向边距重叠 (给子元素增加了父元素div)外边距将不会重叠
解决margin重叠问题(添加独立BFC)
解决浮动高度塌陷问题(在父元素添加overflow:hidden