清除浮动
假设有如下的结构
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
}
.container {
width: 100vw;
height: 100vh;
}
.header {
height: 90px;
background-color: #35b2aa;
}
.main {
background-color: #1a8081;
}
.item {
height: 100px;
width: 100px;
background-color: #fa653e;
}
.float-left {
float: left;
}
</style>
</head>
<body>
<section class="container">
<header class="header">header</header>
<main class="main">
<div class="item float-left"></div>
<div class="item float-left"></div>
</main>
</section>
</body>
</html>
main此时子元素没有浮动,那么显示是这样的:
问题1:给所有的子元素都设置了浮动( e.g float: left ),那么父元素的高度就会为0。
解决这个问题的方法很多,现在我们用清除浮动来解决这个问题。
.clearfix::after {
content: '';
display: block;
clear: both;
}
<main class="main clearfix">
<div class="item float-left"></div>
<div class="item float-left"></div>
</main>
问题2:给item加上margin,(不加浮动了)
.item {
height: 100px;
width: 100px;
background-color: #fa653e;
margin: 10px;
}
<main class="main clearfix">
<div class="item"></div>
<div class="item"></div>
</main>
margin重叠了。修改如下:
.clearfix::before,
.clearfix::after {
content: '';
display: table;
}
.clearfix::after {
clear: both;
}