清除浮动
Clear 属性的含义
对设置了 clear
属性的元素自身做一些限制操作,而并非人们常说的对 float
元素做限制操作。
none
:默认值,允许左右浮动left
:左侧抗浮动right
:右侧抗浮动both
:两侧抗浮动
注意
clear
属性是让自身不能和前面的浮动元素相邻,也就是说后面的浮动元素它是不管的。更进一步讲,float
为left
时,left
有效,both
等同于left
;float
为right
时,right
有效,both
等同于right
。clear
属性只有块级元素才有效,而伪元素默认都是内联,这就是平时借助伪元素清除浮动时需要设置display
的原因。
示例
我是浮动元素
我是浮动元素
<div class="parent">
<p>我是浮动元素</p>
<p>我是浮动元素</p>
</div>
1
2
3
4
2
3
4
.parent {
overflow: hidden; /* bfc */
border: 1px solid #3eaf7c;
}
.parent p {
float: left;
}
1
2
3
4
5
6
7
2
3
4
5
6
7
方案一
我是浮动元素
我是不浮动元素
<div class="parent">
<p>我是浮动元素</p>
<p class="clear">我是不浮动元素</p>
</div>
1
2
3
4
2
3
4
.parent {
overflow: hidden; /* bfc */
border: 1px solid #3eaf7c;
}
.parent p {
float: left;
}
.parent .clear {
clear: both;
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
方案二
我是浮动元素
我是不浮动元素
<div class="parent1">
<p class="clear">我是浮动元素</p>
<p>我是不浮动元素</p>
</div>
1
2
3
4
2
3
4
.parent {
overflow: hidden; /* bfc */
border: 1px solid #3eaf7c;
}
.parent p {
float: left;
}
.parent .clear {
float: none;
}
.parent .clear::before {
content: '';
display: block;
clear: both;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
方案三
我是浮动元素
我是不浮动元素
<div class="parent">
<div class="clear">
<p style="float:left">我是浮动元素</p>
</div>
<p>我是不浮动元素</p>
</div>
1
2
3
4
5
6
2
3
4
5
6
.parent {
border: 1px solid #3eaf7c;
}
.parent .clear {
overflow: hidden;
}
1
2
3
4
5
6
2
3
4
5
6
方案四
我是浮动元素
我是不浮动元素
<div class="parent">
<p style="float:left">我是浮动元素</p>
<div class="clear"></div>
<p>我是不浮动元素</p>
</div>
1
2
3
4
5
2
3
4
5
.parent {
border: 1px solid #3eaf7c;
}
.parent .clear {
clear: both;
}
1
2
3
4
5
6
2
3
4
5
6