【问题标题】:HTML/CSS: Clear floating elements in the middle without adding unneeded tagsHTML/CSS:清除中间浮动元素而不添加不需要的标签
【发布时间】:2013-12-04 19:27:00
【问题描述】:

大多数 clearfix 技术都涉及在父容器的最底部添加内容,我最喜欢伪元素方法,因为它不会在 HTML 中添加不需要的元素。

但是,最近我发现我正在处理一个容器,其中有一些子项浮动但不是全部。说前两个孩子,第一个向左浮动,第二个向右浮动。我需要一种在第二个元素之后立即清除浮动的方法,这样下面的内容就不会被挤在它们之间。有没有办法清除中间的浮动元素但不添加clearfix元素?

下面是一个例子:

HTML

<div class="container">
    <div class="child">
        first child!
    </div>
    <div class="child">
        second child!
    </div>
    <div class="child">
        third child!
    </div>      
</div>

CSS

.container {
    width: 200px;
}

.child:nth-child(1) {
    float: left;
    background: yellow;
}

.child:nth-child(2) {
    float: right;
    background: red;
}

.child:nth-child(3) {
    background: blue;
    color: white;
}

请查看此jsfiddle 以了解我现在拥有什么。

【问题讨论】:

    标签: html css css-float clearfix


    【解决方案1】:

    您必须使用clear property

    你的例子:

    .child:nth-child(3) {
        clear: both;
    }
    

    jsfiddle

    【讨论】:

    • 外星人的同一个答案
    【解决方案2】:

    添加一个 clear:both;在第三个孩子帮助:

    .child:nth-child(3) {
        background: blue;
        color: white;
        clear:both;
    }
    

    【讨论】:

    • 外星人的同一个答案
    【解决方案3】:

    只需在第 3 个rd 元素上使用clear: both;,这样您就不必在浮动元素之后使用&lt;div style="clear: both;"&gt;&lt;/div&gt;

    .child:nth-child(3) {
        background: blue;
        color: white;
        clear: both;
    }
    

    Demo


    此外,如果您希望在不添加额外元素的情况下清除父元素或使用overflow: hidden;(这是clear 浮动的肮脏方式),您可以在父元素上调用class,使用下面的属性

    .clear:after {
       content: "";
       display: table;
       clear: both;
    }
    

    例如

    <div class="wrapper clear">
        <div class="left_floated_div"></div>
        <div class="right_floated_div"></div>
    </div>
    

    【讨论】:

    • 感谢您的回答,所有这些都是很好且显而易见的答案,但我会接受您的答案,因为它包含更多信息。天哪,天哪,我真是太愚蠢了,没有看到如此明显的解决方案……只需使用后面的任何东西来清除浮子!顺便说一句,如果我有多个元素交替左右浮动,是否有告诉他们在每个浮动左侧开始一个新行而不是将它们全部卡在同一行上?没有在它们上设置宽度。
    • @Xavier_Ex 我也有一个答案here 也涵盖了一些浮动;)欢迎您...
    • @Xavier_Ex 对于您的问题,请更改 DOM,这是将浮动元素包装在包装器元素中的好习惯,并使用我在回答中已经建议的 clear 类@ 987654323@
    • 我通常反对在我的 HTML 中使用额外的包装器,因为我认为这会在标记中注入视觉含义。在我的例子中,我使用的是定义列表,所以向左浮动的东西是
      的,而向右浮动的东西是
      的。但我想知道你为什么说包裹浮动元素是一种好习惯?
    • @Xavier_Ex 从某种意义上说,如果我们采用 DOM,这是一种很好的做法,没有什么可以抗拒忽略包装元素,您只是将数据绑定到更小的盒子中,dtdd有特殊含义,就像ul li 一样,为您的文档使用正确的标签是必不可少的,从 SEO 的角度来看也是如此。所以不要多余地使用包装元素
    猜你喜欢
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多