左浮和右浮除了方向不同,其余都一样
💡:float 导致父容器高度塌陷
<style>
.father {
border: 1px solid salmon;
width: 400px;
}
.child {
background-color: gold;
color: black;
border: 1px solid black;
}
.eg1 {
width: 300px;
height: 60px;
}
.float {
float: left;
}
</style>
<div class="demo">
<div class="father">
<div class="child eg1">
</div>
</div>
son:300 × 60,father:400 × 62
</div>
<div class="demo">
<div class="father">
<div class="child eg1 float">
</div>
</div>
son:300 × 60,father:400 × 0
</div>
💡:float 元素块状化
💡: float 元素 width:auto
适应于内容
从两方面分析 -> 竖直和水平
💡:没有任何元素时
<style>
.father {
border: 1px solid salmon;
width: 400px;
padding-top: 20px;
height: 80px;
}
.child {
background-color: gold;
color: black;
width: 200px;
margin-top: 40px;
}
.float {
float: left;
}
</style>
<div class="demo">
<div class="father">
<span class="child">
span 元素
</span>
</div>
</div>
<div class="demo">
<div class="father">
<span class="child float">
span 元素
</span>
</div>
</div>
💡:上面为 block 元素时
<style>
.father {
border: 1px solid salmon;
width: 400px;
height: 100px;
}
.child {
background-color: gold;
color: black;
width: 200px;
margin-top: 40px;
}
.float {
float: left;
}
.box {
background-color:lightgreen;
margin-bottom: 20px;
height: 20px;
}
</style>
💡:上面为 line box 时
一个更明显的例子:
至此,我们通过这三个例子,对于 float 元素在竖直方向上的定位,有了直观的了解……
先走竖直,再走水平……
💡:左边没有浮动元素时
包含块加padding-left
:
💡:左边有浮动元素时
一行有两个浮动元素,是先考虑放浮动元素,再考虑放其它正常流下的内联元素的!
浮动元素宽度较小时:
宽度较大时:
宽度非常大时:
通过这三个例子,我想你可以很直观地感受到浮动元素飘动的过程……
这个比较重要
💡:block 和 block 作用
<style>
.father {
border: 1px solid salmon;
width: 400px;
height: 100px;
color: black;
}
.first {
background-color: lightgreen;
height: 20px;
margin-bottom: 40px;
}
.second {
background-color: gold;
width: 200px;
height: 40px;
}
.third {
background-color: lightpink;
width: 300px;
height: 80px;
margin-top: 20px;
}
.float {
float: left;
}
</style>
💡:block 和 line box(空间充足)
💡:block 和 line box(空间不足)
💡:line box 和 block
💡:line box 和 line box
👇:了解完浮动对后边元素的影响后,我们就得把它给清除掉,不然就会影响布局了!
💡:clear 的效果示意图(无 margin)
💡:clear 的效果示意图(有 margin)
我再测试一下,把margin-top
调成30px
:
也就是说 clear 元素的margin-top
也是有效果的!
总之,之所以 clear 能清除浮动是因为,它为 div 3 填充了一个空隙
IFC 是在某个领域下遵循的一些规则,而且这些针对内联元素的规则是很复杂的,有好几十个……
而 BFC 要简单多了!
💡:哪些情况下会产生 BFC?
👇:对于 BFC,说一些比较实用的东西
💡:BFC 产生的效果
👇:接下来看一些使用例子
💡:BFC 清除浮动影响
💡:BFC 解决 margin 重叠问题
解决这种重叠的姿势有很多……
💡:BFC 实现两栏自适应布局
margin
合并,margin
是触碰边界content-area
为浮动元素的触碰边界margin-right
为触碰边界 -> 这是在 line box 足矣容纳两个浮动元素的情况
margin-right
边界 -> 需要看父容器减去浮动元素得到的宽是否可以容纳 inline box,能,那就呆在这一行 line box,不能那就下一行margin-top
为触碰的边界line box
,相当于时连续写两个span
margin-top
的情况,这是二者之间的最小间距