在下面的场景中,为什么:after
选择器需要一个content属性才能起作用?
.test {
width: 20px;
height: 20px;
background: blue;
position:relative;
}
.test:after {
width: 20px;
height: 20px;
background: red;
display: block;
position: absolute;
top: 0px;
left: 20px;
}
<div class="test"></div>
注意,在指定 content 属性之前,您看不到伪元素:
.test {
width: 20px;
height: 20px;
background: blue;
position:relative;
}
.test:after {
width: 20px;
height: 20px;
background: red;
display: block;
position: absolute;
top: 0px;
left: 20px;
content:"hi";
}
<div class="test"></div>
为什么这是预期的功能呢?我们可能认为display:block会强制元素显示出来。但奇怪的是,你实际上可以在Web调试工具中看到样式,但它们不会显示在页面上。
display:none
可以用于这些伪元素上,以隐藏生成的内容而不覆盖它。例如:计数器,只有在悬停在元素上时才可见,无须每次都重新生成。这是一个更新后的 Fiddle(将鼠标悬停在文本上方):http://jsfiddle.net/VzZUz/1/ - James Donnelly