盒模型的组成,由里向外分别是content,padding,border,margin
盒子模型在页面中占的实际宽度是:(margin+padding+border)*2 + width,高度同理。
两个模型的区别是: 标准盒模型的宽高指的是 content 然而IE模型 的宽高是 content + padding + border
如何设置两个模型
标准盒模型: box-sizing:content-box;
ie模型 :box-sizing:border-box
JS如何设置获取盒模型对应的宽高
dom.style.width/height //这个获取的是获取行内元素的值
dom.currentStyle.width/height //IE的获取
window.getComputedStyle(dom).width/height //通用的获取
dom.getBoundingClientReat().width/height // 获取具体的坐标
BFC(边距重叠解决方案)
基本概念 块级格式化上下文
BFC的原理
-
内部的Box会在垂直方向,一个接一个地放置。
-
Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠。
-
每个盒子(块盒与行盒)的margin box的左边,与包含块border
box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。 -
BFC的区域不会与float box重叠。
-
BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
-
计算BFC的高度时,浮动元素也参与计算。
BFC的创建
1、float的值不是none。
2、position的值不是static或者relative。
3、display的值是inline-block、table-cell、flex、table-caption或者inline-flex
4、overflow的值不是visible