HTML clearfix清除浮动讲解
<h2>一、浮动的概念</h2><p>浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。<br />由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样。</p>
<h2>二、浮动的影响</h2>
<h3>1. 浮动会导致父元素高度坍塌</h3>
<p style="text-align:center"><img alt="" height="278" src="https://img.jbzj.com/file_images/article/202108/202108160945253.png" width="624" /></p>
<p>父元素中有子元素,并且父元素没有设置高度,子元素在父元素中浮动,结果必然是父元素的高度为0,这也就导致了父元素高度塌陷问题。</p>
<p>浮动脱离文档流,这个问题会对整个页面布局带来很大影响,如何解决高度坍塌问题,我们需要清除浮动。</p>
<h2>三、浮动的清除</h2>
<h3>1. clear属性的空标签</h3>
<p>在浮动元素后添加一个空标签</p>
<div class="jb51code"><pre class="brush:xhtml;">
<div class="clear"></div></pre></div>
<p>,并且在CSS中设置</p>
<div class="jb51code"><pre class="brush:css;">
.clear{clear:both;}</pre></div>
<p>即可清理浮动。</p>
<p style="text-align:center"><img alt="" height="501" src="https://img.jbzj.com/file_images/article/202108/202108160945254.png" width="626" /></p>
<ul><li>原理:添加一个空标签,利用CSS提高的clear:both清除浮动,让父元素可以自动获取到高度</li><li>优点:简单,代码少,兼容所有浏览器</li><li>缺点:增加页面的标签,造成结构的混乱</li><li>建议:不推荐使用,此方法已经过时</li></ul>
<h3>2. :after伪元素</h3>
<p>给浮动元素的容器添加一个clearfix的class,然后给这个class添加一个:after伪元素实现元素之后添加一个看不见的块元素(Block element)清理浮动。</p>
<div class="jb51code"><pre class="brush:css;">.clearfix:after{content:'\20';display:block;height:0;clear:both}
.clearfix{zoom:1}
.clear{clear:both;height:0;line-height:0;font-size:0;visibility:hidden;overflow:hidden}</pre></div>
<p style="text-align:center"><img alt="" height="500" src="https://img.jbzj.com/file_images/article/202108/202108160945255.png" width="624" /></p>
<ul><li>原理:通过CSS伪元素在容器的内部元素之后添加一个看不见的空格“/20”或点“.” ,并且设置clear属性清除浮动。</li><li>优点:浏览器支持较好</li><li>缺点:clearfix这个class需要添加zoom: 1(触发haslayout),才能支持IE6和IE7浏览器</li><li>建议:推荐使用,设置公共类,减少CSS代码</li></ul>
頁:
[1]