使用:after后清除浮动元素

时间:2012-05-22 09:31:03

标签: html css

我有一个列表,而li有一个float:left;<ul>之后的内容应正确对齐。因此,我可以建立以下内容:

http://jsfiddle.net/8unU8/

我想,我可以使用伪选择器删除<div class="clear">,例如:after。

但是这个例子不起作用:

http://jsfiddle.net/EyNnk/

我是否总是需要创建一个单独的div来清除浮动元素?

5 个答案:

答案 0 :(得分:254)

像这样写:

.wrapper:after {
    content: '';
    display: block;
    clear: both;
}

选中此http://jsfiddle.net/EyNnk/1/

答案 1 :(得分:6)

不,你不能做这样的事情:

<ul class="clearfix">
  <li>one</li>
  <li>two></li>
</ul>

以下CSS:

ul li {float: left;}


.clearfix:after {
  content: ".";
  display: block;
  clear: both;
  visibility: hidden;
  line-height: 0;
  height: 0;
}

.clearfix {
  display: inline-block;
}

html[xmlns] .clearfix {
   display: block;
}

* html .clearfix {
   height: 1%;
}

答案 2 :(得分:5)

这也可行:

.clearfix:before,
.clearfix:after {
    content: "";
    display: table;
} 

.clearfix:after {
    clear: both;
}

/* IE 6 & 7 */
.clearfix {
    zoom: 1;
}

将课程clearfix提供给元素,例如您的ul元素。

来源herehere

答案 3 :(得分:0)

文字'dasda'绝不会在标签内,对吗?语义上和有效的HTML,只需添加清晰的类:

http://jsfiddle.net/EyNnk/2/

答案 4 :(得分:0)

使用

.wrapper:after {
    content : '\n';
}

很像Roko提供的解决方案。它允许使用:after和:在psuedo之前插入/更改内容。详情请查看 http://www.quirksmode.org/css/content.html