フローティング要素は標準フローから逸脱しているため、ページのレイアウトに影響し、次の要素に影響しますが、前の要素には影響しません。
フロートをクリア:
- 親要素に高さを追加すると、親要素がスペースを占め、標準のフローとなり、浮動要素は下の要素に影響しません。
- 親要素にoverflow:hidden;属性を設定すると、ウィンドウのグローバルスコープと同様に、このブロックレベルの要素の独立したブロックコンテキストが生成され、関数を宣言すると独立したスコープが生成されます。ブロック要素の内部レイアウトは完全に独立しており、分離されています。(BFCを含む)
- 親要素内で、末尾にclearという名前のボックスを追加し、スタイルをclearに設定します。
- 純粋なcssメソッドを使用して解決し、表示を追加:黒;クリア:両方;後の親要素の疑似要素に
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.parent {
border: 1px solid black;
/* 父元素添加overflow: hidden;可以清除浮动 */
/* overflow: hidden; */
/* 添加高度也可以清除浮动 */
/* height: 200px; */
}
/* .clear {
clear: both;
} */
/* 使用纯css方法来解决浮动后父元素的高度问题 */
.parent::after {
content: '';
display: block;
clear: both;
}
.child {
width: 200px;
height: 200px;
float: left;
}
.box1 {
background-color: orangered;
}
.box2 {
background-color: orchid;
}
.box3 {
background-color: palegreen;
}
.boxa {
width: 200px;
height: 200px;
background-color: green;
}
</style>
</head>
<body>
<div class="parent">
<div class="child box1"></div>
<div class="child box2"></div>
<div class="child box3"></div>
<!-- <div class="clear"></div> -->
</div>
<div class="boxa"></div>
</body>
</html>