我从之前问过的一个问题中得到了http://jsfiddle.net/8p2Wx/2/,我看到了这些代码:
.cf:before,
.cf:after {
content:"";
display:table;
}
.cf:after {
clear:both;
}
如果我去掉 content:""
,那么就会破坏效果,但我不理解为什么需要它。
为什么在 :after
和 :before
伪元素中需要添加空的 content
?
我从之前问过的一个问题中得到了http://jsfiddle.net/8p2Wx/2/,我看到了这些代码:
.cf:before,
.cf:after {
content:"";
display:table;
}
.cf:after {
clear:both;
}
如果我去掉 content:""
,那么就会破坏效果,但我不理解为什么需要它。
为什么在 :after
和 :before
伪元素中需要添加空的 content
?
如果你没有定义生成的内容,那么就无法为其设置样式。如果你只是需要一个额外的“不可见元素”进行样式设置,而不需要任何真正的内容,那么可以将其设置为空字符串 (content: ''
) 并对其进行样式设置。
你可以自己轻松验证这一点:http://jsfiddle.net/mathias/YRm5V/
顺便提一下,你发布的代码片段是微型清除浮动技巧,详情请参考:http://nicolasgallagher.com/micro-clearfix-hack/
至于你的第二个问题,在某些旧版浏览器中,你需要使用HTML5 shiv(一个小型 JavaScript 片段)才能对<nav>
标签进行样式设置。
CSS有一个叫做content的属性。它只能与伪元素:after和:before一起使用。它的写法类似于伪选择器(带有冒号),但它被称为伪元素,因为它实际上并没有选择页面上存在的任何内容,而是向页面添加了新的内容。
请参见以下链接以获得更好的解释:
而nav元素是:
HTML5中的新元素之一是nav元素,它允许您将链接分组在一起,从而产生更语义化的标记和额外的结构,这可能有助于屏幕阅读器。在本文中,我将讨论如何使用它以及规范定义中的一些保留意见。
ul
了吗?它怎么会是空的呢? - qwertymkul:after
并将其content
属性设置为某些内容,将会在<ul>
后面添加一个新的元素,该元素在 DOM 中是不可见的,但可以通过 CSS 进行样式设置。 - Mathias Bynensdisplay: inline-block
,为什么它就不显示了呢? - undefined