为什么clear:both不起作用?
Web开发人员在调试网页时经常会遇到clear:both
不起作用的情况,clear:both
的作用是清空该元素左右两边浮动的元素,让它在左右两边都没有其它网页元素排列。大多数情况下我们需要用用到clear:both
,是因为让一个网页元素float:left
或float:right
时,它却浮动在其它元素旁,比如:
这个时候,程序员首先想到的是在这个元素上再加上clear:both
属性,期望以此清楚两边的其它元素,让它自己独占整行的空间。结果却是大失所望,clear:both
对这个元素不起任何作用。
为什么clear:both
不起作用?
参考MDN上的说明:
clear
属性只是在block
元素是起作用,如果你把clear:both
用在一个inline-block
或inline
元素上,clear:both
是不会起任何作用的。
如果你想对一个inline-block
或inline
元素施加clear:both
的效果,最简单的方法是用div
元素把它包起来,让在这个div
上利用::after
伪元素实现其内部的元素的clear:both
,下面是一种参考的写法:
.clearfix:after { clear:both; content:"."; display:block; height:0; line-height:0; visibility:hidden; }
将上面的.clearfix
放在包裹inline-block
或inline
的float元素的div
上,它就像表现出类似clear:both
的效果。
阅读余下内容
给它的父元素清除浮动就可以啊
楼上
清除父元素的浮动,不是为了让特定的块独占一行。是为了解决父元素边框塌陷的问题