标签: clearfix

你如何让浮动元素的父母崩溃?

尽管像<div>s 这样的元素通常会增长以适应其内容,但使用该float属性可能会给 CSS新手带来惊人的问题:如果浮动元素具有非浮动父元素,则父元素将崩溃.

例如:

<div>
  <div style="float: left;">Div 1</div>
  <div style="float: left;">Div 2</div>
</div>
Run Code Online (Sandbox Code Playgroud)

此示例中的父div 不会展开以包含其浮动的子项 - 它似乎具有height: 0.

你怎么解决这个问题?

我想在这里创建一个详尽的解决方案列表.如果您了解跨浏览器兼容性问题,请指出它们.

解决方案1

浮动父母.

<div style="float: left;">
  <div style="float: left;">Div 1</div>
  <div style="float: left;">Div 2</div>
</div>
Run Code Online (Sandbox Code Playgroud)

优点:语义代码.
缺点:您可能并不总是希望父级浮动.即使你这样做,你是否漂浮了父母的父母,等等?你必须浮动每个祖先元素吗?

解决方案2

给父母一个明确的高度.

<div style="height: 300px;">
  <div style="float: left;">Div 1</div>
  <div style="float: left;">Div 2</div>
</div>
Run Code Online (Sandbox Code Playgroud)

优点:语义代码.
缺点:不灵活 - 如果内容更改或浏览器调整大小,布局将中断.

解决方案3

在父元素中添加"spacer"元素,如下所示:

<div>
  <div style="float: left;">Div 1</div>
  <div style="float: left;">Div 2</div>
  <div …
Run Code Online (Sandbox Code Playgroud)

html css layout css-float clearfix

988
推荐指数
10
解决办法
29万
查看次数

什么是clearfix?

最近我查看了一些网站的代码,发现每个人<div> 都有一个班级clearfix.

经过快速谷歌搜索,我了解到它有时适用于IE6,但实际上是什么是一个clearfix?

与没有clearfix的布局相比,您能提供一些带有clearfix的布局示例吗?

html css layout cross-browser clearfix

972
推荐指数
7
解决办法
64万
查看次数

我可以使用哪种'clearfix'方法?

我有一个div包装两列布局的古老问题.我的侧边栏是浮动的,所以我的容器div无法包装内容和侧边栏.

<div id="container">
  <div id="content"></div>
  <div id="sidebar"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

似乎有很多方法可以修复Firefox中的明确错误:

  • <br clear="all"/>
  • overflow:auto
  • overflow:hidden

在我的情况下,唯一似乎正常工作的是<br clear="all"/>解决方案,这有点邋.. overflow:auto给我讨厌的滚动条,overflow:hidden肯定有副作用.此外,IE7显然不应该由于其不正确的行为而遭受这个问题,但在我的情况下,它与Firefox的痛苦相同.

目前我们可以采用哪种方法最强大?

css clearfix

856
推荐指数
17
解决办法
46万
查看次数

clearfix类在css中做了什么?

我看过div标签clearfix在孩子divs使用该float属性时使用了一个类.clearfix类如下所示:

.clearfix:after {
    clear: both;
    content: ".";
    display: block;
    height: 0;
    visibility: hidden;
}
.clearfix {
    display: inline-block;
}
.clearfix {
    display: block;
}
Run Code Online (Sandbox Code Playgroud)

我发现如果我clearfix在使用该bottom-border属性时不使用,边框将显示在孩子上方divs.有人可以解释一下clearfix类的作用吗?另外,为什么有两个display属性?这对我来说似乎很奇怪.我特别好奇这content:'.'意味着什么.

谢谢,G

html css clearfix

86
推荐指数
3
解决办法
16万
查看次数

了解Bootstrap的clearfix类

.clearfix {
  *zoom: 1;
  &:before,
  &:after {
    display: table;
    content: "";
    // Fixes Opera/contenteditable bug:
    // http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952
    line-height: 0;
  }
  &:after {
    clear: both;
  }
}
Run Code Online (Sandbox Code Playgroud)
  1. 为什么不用display:block
  2. 另外,为什么它也适用于::before伪类?

less clearfix twitter-bootstrap

61
推荐指数
2
解决办法
14万
查看次数

是不是弃用了clearfix?

您知道这个古老的问题:包含浮动元素的容器不会自动扩展其高度以包围其子级.

修复此问题的一种方法是"clearfix",它添加了许多CSS规则以确保容器正确伸展.

但是,只是提供容器overflow: hidden似乎也可以正常工作,并具有相同的浏览器兼容性.

根据本指南,这两种方法兼容当今所有重要的浏览器.

这是否意味着"clearfix"已被弃用?使用它还有什么好处overflow: hidden吗?

这里有一个非常相似的问题:clearfix hack和overflow之间有什么不同:hidden vs overflow:auto? 但问题并没有真正回答那里.

html css clearfix

48
推荐指数
3
解决办法
9097
查看次数

如何在twitter bootstrap元素后创建换行符?

我道歉,因为这看起来很简单.

以下一个元素在换行符上的方式插入换行符的正确方法是什么?似乎有些东西会自动执行此操作(例如<p>在`内),但我看到下一个元素可以出现在最后一个元素旁边的行为.

HTML:

<ul class="nav nav-tabs span2">
    <li><a href="./index.html"><i class="icon-black icon-music"></i></a></li>
    <li><a href="./about.html"><i class="icon-black icon-eye-open"></i></a></li>
    <li><a href="./team.html"><i class="icon-black icon-user"></i></a></li>
    <li><a href="./contact.html"><i class="icon-black icon-envelope"></i></a></li>
</ul>
<BR /> <!-- It seems dumb to need this!  Is this really how -->
<BR /> <!-- to get a newline? -->
<BR /> <!-- Well, it's what -->
<BR /> <!-- I'm doing now, I suppose... -->
<BR />

<div class="well span6">
    <h3>I wish this appeared on the next line without having to …
Run Code Online (Sandbox Code Playgroud)

html html-lists css-float clearfix twitter-bootstrap

33
推荐指数
3
解决办法
9万
查看次数

ClearFix vs Overflow

它是标准的浮动问题.在父容器div中有一堆浮动元素.由于孩子是浮动的,因此父母不会扩展以包括所有孩子.

我知道clearfix解决方案以及将父容器div上的overflow属性设置为"auto"或"hidden".http://www.quirksmode.org/css/clearing.html 对我来说,设置overflow方法看起来好像只是一个属性.我想要了解的是,clearfix方法何时优于此方法,因为我发现它经常使用.

PS我不关心IE6.

css clearfix

32
推荐指数
1
解决办法
1万
查看次数

使用twitter bootstrap的Clearfix

我有一个twitter bootstrap的问题,对我来说有点奇怪.我有一个侧边栏固定在左侧和主要区域.

<div>
  <div id="sidebar">
    <ul>
      <li>A</li>
      <li>A</li>
      <li>C</li>
      <li>D</li>
      <li>E</li>
      <li>F</li>
      <li>...</li>
      <li>Z</li>
    </ul>
  </div>
  <div id="main">
    <div class="clearfix">
      <div class="pull-right">
        <a>RIGHT</a>
      </div>
    </div>
  <div>MOVED BELOW Z</div>
</div>
Run Code Online (Sandbox Code Playgroud)

#sidebar {
  background: red;
  float: left;
  width: 100px;
}

#main {
  background: green;
  margin-left: 150px;
  overflow: hidden;
}
Run Code Online (Sandbox Code Playgroud)

在主要区域内部,我有一些左拉和拉右的内容,由clearfix清除.

问题是clearfix-div下面的内容被移动到低于侧边栏内容.

我为此做了一个小提琴:http://jsfiddle.net/ZguC7/

我通过将"overflow:collapse"设置为#main解决了这个问题,但是我不理解它,如果有人可以解释导致这个问题的原因,我会非常高兴.

css clearfix twitter-bootstrap-3

27
推荐指数
1
解决办法
10万
查看次数

引导程序中的类clearfix问题

我正在使用twitter bootstrap,我clearfix在bootstrap中遇到类问题.我的HTML是:

<div class="pull-left">This is a text</div>
<hr class="clearfix" />
Run Code Online (Sandbox Code Playgroud)

我期待的是水平线应该出现在显示文本的下一行,但它会在文本的右侧呈现.而如果当我使用style='clear: both;'hr不是它工作正常.为什么clearfix不这样做clear: both呢?

javascript css clearfix twitter-bootstrap

16
推荐指数
2
解决办法
4万
查看次数