css clearfix 没有按预期工作

Posted

技术标签:

【中文标题】css clearfix 没有按预期工作【英文标题】:css clearfix isnt working as it supposed to be 【发布时间】:2013-12-01 23:46:33 【问题描述】:

我必须在我的 div 中浮动元素,我使用了在互联网上找到的 clearfix,但它不能正常工作。

<div id="header" class="clear">
    <div class="header-left"> <a href="#" class="logo"></a> </div>

    <div class="header-right">
        <div class="quick-drop">
            <ul>
                <li class="quicklinks">Quicklinks
                    <img src="images/quicklink-icon.png" />
                </li>
                <li class="dropdown">Select from dropdown
                    <img src="images/dropdown-icon.png" />
                </li>
            </ul>
        </div>

        <div class="search-block">
            <input type="text" class="search" name="search" placeholder="Search for something here" />
        </div>
    </div>

    <div class="header-nav">it should be below but it is under</div>
</div>

CSS

.clear:before, .clear:after 
    content:"\0020";
    display: block;
    height: 0;
    overflow: hidden;

.clear:after 
    clear: both;

.header-left 
    float:left;
    margin:40px 0;

.header-right 
    float:right;
    margin:40px 0;

.logo 
    background:url('../images/logo.png') no-repeat;
    width:250px;
    height:50px;
    display:block;

.quick-drop 
    display:inline-block;

.quick-drop ul 
    margin:0;
    padding:0;
    margin:18px 0;

.quick-drop ul li 
    list-style-type:none;
    display:inline-block;
    height:19px;
    padding:3px;
    text-align:center;
    font-size:12pt;

ul .quicklinks 
    color:#c7c7c7;
    border-right:1px #c7c7c7 solid;

ul .dropdown 
    color:#58159b;

.quick-drop ul li img 
    margin:0 15px;

.search-block 
    display:inline-block;

.search 
    background:url('../images/search-icon.png') right no-repeat #fff;
    background-position:260px;
    width:260px;
    height:16px;
    border:none;
    outline-color:#58159b;
    padding:15px;
    box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
    text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
    color:#c7c7c7;

http://jsfiddle.net/qKFAc

.header-nav 应该在 2 个 div 之下,但它在它们之下,我做错了什么?

谢谢。

【问题讨论】:

你知道.clear.clearfix 类之间的区别吗?此外,我不明白下面和下面之间的区别(我猜一个是在 Z 轴上绝对定位。我会用底部作为另一个,但是英语不是我的第一语言,所以也许......) Difference between clear and clearfix。您不应该将上述行为命名为“clear”(只是按照惯例),因为当您听到“use clear”或“is it in a clearfix?”时会感到非常困惑。并且您的班级两者都做,或者另一个班级做什么;) 【参考方案1】:

明确的修复应该在浮动元素之后,如下所示:

从父级中移除 clear 类。那么:

<!-- Floated -->
<div class="clear"></div>
<div class="header-nav">it should be below but it is under</div>

【讨论】:

我不想使用 - 它的脏代码【参考方案2】:
.header-nav

    clear:left;

请添加此css规则

【讨论】:

【参考方案3】:

添加这个:

.clear 
    clear: both;

jsFiddle:http://jsfiddle.net/qKFAc/1/

【讨论】:

为什么不呢?他的 CSS 中缺少明确的规则。 puesdo 课程在那里,但不是标准课程。我用小提琴更新了帖子。 这个 CSS 代码对 OP html 代码没有任何作用(如果在标题之前有其他元素可能会这样做)。既然您已经发布了一个带有您未提及的修改的 HTML 代码,是的,这适用于您的 HTML 代码。

以上是关于css clearfix 没有按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

css Float,Clear,Clearfix

scss Clearfix CSS基于David Walsh的代码:http://davidwalsh.name/css-clear-fix

清除浮动clearfix

为啥这个 CSS 过渡没有按预期工作? [复制]

css清除浮动clearfix:after的用法详解(转)

css清除浮动