如何排除诸如:before和:after这样的伪元素被选择器更改,例如::hover
也许有某种我不知道的“主伪元素”?
我尝试过使用CSS3 :not()语句,但这不起作用。
使用:.facebook:hover:before {color: black;}运行良好,但我确信有更好的解决方案。
示例:我希望Facebook标识保持黑色,并更改文本颜色。
body {
background: #F7F7F7;
margin: 0px;
}
.share-button {
background: #FFFFFF;
border: 1px solid #D8D8D8;
display: inline-block;
font-family: 'Open Sans';
font-weight: 600;
font-size: 12px;
text-transform: uppercase;
letter-spacing: 2px;
margin: 0px;
padding: 12px 24px 12px 12px;
transition: color 1s;
}
.facebook:before {
display: inline-block;
height: auto;
font-family: 'FontAwesome';
font-size: 12px;
padding-right: 12px;
width: auto;
content: '\f09a';
}
.share-button:hover {
color: #374D8D;
}<button class="share-button facebook">
Share on facebook
</button>
发布于 2015-02-23 14:19:02
这里的问题不是伪元素本身是由:hover选择器“匹配”的,而是它从元素上相应的CSS规则继承了color属性。
这就是为什么需要在:before伪元素上显式设置它的原因--您不能使用选择器阻止继承,也不能在父元素或原始元素上使用样式。
https://stackoverflow.com/questions/28675755
复制相似问题