盒子模型
盒子模型
1. 标准盒模型
width = 内容width + padding + border + margin
标准盒模型设置元素width只是设置的元素width,不包括padding,border,margin宽度
2. IE盒模型
width = 内容width + padding + border
IE浏览器的渲染模式是 元素width就包含了元素里面的内容宽度、内填充和边框宽度,即(width = 内容width + padding + border),
设置了padding和border后,会自动缩减内容with
margin单独计算,不在盒模型范围内
box-sizing
box-sizing: border-box; // 使用IE盒模型
box-sizing: content-box; // 使用默认盒模型,即标准盒模型
内填充(padding)
padding-left, padding-right, padding-top, padding-bottom
padding: 上 右 下 左;顺时针方向
padding: 上下 左右;
padding: 上 左右 下;
外边距(margin)
块级元素设置 margin-right: auto 和 margin-left: auto 后会在父元素内居中显示
外边距合并:
<div class="box"> <div class="box1"> div> <div class="box2"> div> div> // 清除所有元素默认padding和margin * { padding: 0; margin: 0; } .box { width: 100px; margin-left: auto; margin-right: auto; } .box1 { width: 50px; height: 50px; margin-top: 20px; margin-bottom: 20px; } .box2 { width: 50px height: 50px; margin-top: 30px; } // .box1设置的margin-top:20px,不会实现.box1元素上面距离.box元素20px,而是.box元素上面距离再上一级元素20px(情况1) // .box1设置的margin-bottom: 20,以及.box2设置的margin-top: 30px,不会实现.box1元素距离.box2元素50px,而是.box1和.box2距离30px(情况2)
外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。
合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。
情况1解决办法:
1. 不给垂直的第一个子元素.box1设置margin-top,给父元素.box设置padding-top
2. 垂直的第一个子元素.box1设置margin-top属性,父元素.box设置边框 border(不推荐)
3. 父元素.box设置 overflow:hidden (块级格式上下文BFC)
情况2暂无解决办法