CSS clearfix 似乎不起作用

标签 css clearfix

我正在尝试使用 clearfix 而不是清除两者,但由于某种原因它不起作用。我按照教程做了所有的事情。

我应该怎么做才能让它发挥作用?

    * {
        margin: 0;
        padding: 0;
    }
    
  /* .first_div {
       width:50%; 
       height:50%; 
       background-color:red;
       margin: 50px auto;  
       overflow: auto;
     
    }*/
    
    .second_div {
        width:50px; 
        height:50px; 
        background-color:green;
        float: left;
     
     } 
    
    .third_div {
          width:50px; 
        height:50px; 
        background-color:blue;
         
     } 

.clearfix:after { content: "\00A0"; display: block; clear: both; visibility: hidden; line-height: 0; height: 0;}
.clearfix{ display: inline-block;}
html[xmlns] .clearfix { display: block;}
* html .clearfix{ height: 1%;}
.clearfix {display: block}
 
 <body>
  <div class="clearfix"> 
    <div class="second_div">sfddsf</div>
    <div class="third_div">sfdsfds</div>
 </div>
    </body>

最佳答案

Clearfix 通过清除元素后的 float 来处理 float 元素。您应该用它包裹 float 元素,因此,这些元素不会从文档流中删除。在您的示例中,third_div 没有 float 。在未 float 的元素之后清除 float 没有多大意义。基本上没有什么可以清除的。另一方面,如果您在 third_div 上添加 clear: both 属性,您将清除 third_div 之前的 float 值,结果,它将 second-div 添加回文档流。根据您要实现的目标,您有两种解决方案。

例子1

如果需要将元素并排显示,可以将它们都 float 并将它们包裹在 clearfix div 中。

CSS

.second_div {
    width:50px; 
    height:50px; 
    background-color:green;
    float: left;
} 
.third_div {
    width:50px; 
    height:50px; 
    background-color:blue;
    float: left;
}
.clearfix:after {
    visibility: hidden;
    display: block;
    font-size: 0;
    content: " ";
    clear: both;
    height: 0;
}

HTML

<div class="clearfix"> 
    <div class="second_div">Second div</div>
    <div class="third_div">Third div</div>
</div>

例子2

如果您需要将它们一个显示在另一个下方,那么您只需将其中一个 float 并包裹起来,另一个将按照文档流自动定位在下方。

CSS

.second_div {
    width:50px; 
    height:50px; 
    background-color:green;
    float: left;
} 
.third_div {
    width:50px; 
    height:50px; 
    background-color:blue;
}
.clearfix:after {
    visibility: hidden;
    display: block;
    font-size: 0;
    content: " ";
    clear: both;
    height: 0;
}

HTML

<div class="clearfix"> 
    <div class="second_div">Second div</div>
</div>
<div class="third_div">Third div</div>

关于CSS clearfix 似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43035235/

相关文章:

php - 我的 html 末尾有一个大的空白区域,使用我制作的 wordpress 主题

css - 我可以使用哪些“clearfix”方法?

html - Div 不会自动调整另一个 div 内的高度

jquery - 面板动画时文本不保持形式

html - 如何设置 Bootstrap 可折叠导航栏的样式?

javascript - 如何从静态导航栏转到位置 :fixed without screwing everything?

html - Clearfix 的问题

html - Bootstrap 内容无法与固定宽度的侧边栏一起正确布局

css定位和对象的顺序

css - chrome 上 prestashop 主题的页脚问题