【发布时间】:2012-07-13 13:23:06
【问题描述】:
作为标题,我使用.icon-* 添加图标。向超链接添加图标时:
<a href="#" class="icon-email icon-large">Email me!</a>
content 属性插入的内容在悬停时显示下划线文本装饰。我想只为之前的内容禁用text-decoration:
[class^="icon-"]:before, [class*=" icon-"]:before {
font-family: 'IcoMoon';
font-style: normal;
speak: none;
}
.icon-mail:before {
content: "\37";
}
[class^="icon-large-"]:before, [class*=" icon-large"]:before {
font-size: 48px;
line-height: 48px;
}
a[class^="icon-"]:before, a[class*=" icon-"]:before {
margin-right: 5px;
vertical-align: middle;
}
我试过了,但它不起作用(装饰仍然可见):
a[class^="icon-"]:hover:before, a[class*=" icon-"]:hover:before {
text-decoration: none;
color: white;
}
【问题讨论】:
-
你不能用伪元素做到这一点。你将不得不使用 JS。
-
是的,如果没有 js,你不能像这样将伪元素和伪类加倍。我建议使用 javascript 来处理 :before 而不是处理 :hover。这是因为 :before 并非所有浏览器都支持。但这只是我的 2 美分..
-
@BumbleB2na 至少 IE8+、FF10.0.2+、Opera 11.61+、Safari 5.1.2+、Chrome 17 quirksmode.org/css/contents.html
-
@BumbleB2na:你可以——伪元素必须是选择器中的最后一个。
-
我注意到类和属性选择器中有一些拼写错误,并不是说这些与手头的问题有关。值得注意的是,您的
icon-large属性选择器可以简单地更改为.icon-large:before(但我假设您仅将其作为独立类而不是其他类的前缀)。
标签: css css-selectors pseudo-element