layout
盒子宽度计算
offsetwidth: padding + border + width
margin 纵向重叠问题
同级元素纵向重叠及父子级元素重叠
父子级则最好只在父级设置margin,父子的间距使用padding或者border挤开(不推荐) 使用BFC效果最好
<style>
p{
font-size :16px;
line-height: 1;
margin-top: 10px;
margin-bottom: 15px;
}
</style>
<p>AAA</p>
<p></p>
<p></p>
<p></p>
<p>BBB</p>
对于盒模型,没有加定位时纵向的margin会重叠,只保留最大的margin
A B之间的纵向距离: 15px 一般空标签未指明height时不占用空间
margin 负值问题
-
margin-top、margin-left为负值时本身元素移动(对于其左方、上方元素来说占据空间变小),与margin-right、margin-bottom原理相同 -
margin-right、margin-bottom为负值则右边或者下边的元素移动 相当于是在其他元素(右方、下方的元素)看来此元素减小了,占据的空间变小 如margin-right: -100px相当于元素不占空间
盒子塌陷
当父元素没设置足够大小的时候,而子元素设置了浮动的属性,子元素就会跳出父元素的边界(脱离文档流),尤其是当父元素的高度为auto时,而父元素中又没有其它非浮动的可见元素时,父盒子的高度就会直接塌陷为零
处理方法:
- BFC
- 清除浮动
- 加border
- padding-top
BFC
BFC: Block format context 一块独立的渲染区域,内部元素的渲染不会影响边界以外的元素
形成条件:
- float不是none
- position为 absolute和fixed
- overflow不是visible
- display是flex 或 inline-block等
常用来清除浮动
float 及clearfix
<style type="text/css">
.container {
background-color: #f1f1f1;
}
.left {
float: left;
}
.bfc {
overflow: hidden; /* 触发元素 BFC */
}
</style>
<body>
<div class="container bfc">
<!-- 图片的src需要进行修改才可使用 -->
<img src="xxx.png" class="left" style="magin-right: 10px;"/>
<p class="bfc">某一段文字……</p>
</div>
</body>