您好我的博客上有一些CSS问题。我的Wordpress主题在CSS文件中有一个帖子样式部分,它有一个“Entry”类,其中为文章区域内的链接定义了“a”属性。 我从css生成器生成了一个按钮,并将该按钮插入到使用href指向其他网站的文章中。我的CSS文件有这样的东西,
.Entry a{color:black;text-decoration:underline};
.button {background:black;color:white And some other Styling};
我使用此代码显示按钮。
<a href="some link" class="button">Go to this link</a>
如果不使用class =“button”,则链接将跟随Entry属性。但是当我使用它时,它会显示带有Entry a和class按钮样式混合的按钮。我不希望按钮使用Entry属性。有什么帮助吗?
答案 0 :(得分:5)
您可以使用CSS3 :not
pseudo-class selector作为
.Entry a:not(.button) {color:black;text-decoration:underline}
这将满足您的需求,但早于9的IE版本不支持它。
真正的跨浏览器解决方案更为复杂:您需要“撤消”.Entry a
规则中.button
适用的属性。例如:
.Entry a {color:black;text-decoration:underline}
.button {color:white;text-decoration:none;background:black}
更新:我忘记了一件非常重要的事情。
如果你选择“撤消”路线,你需要确保“撤消”选择器的specificity至少等于第一个选择器的{{3}}。我建议阅读链接页面(时间不长)来掌握这个概念;在此特定情况下,要实现此目的,您必须编写a.button
而不是简单地.button
。
答案 1 :(得分:2)
为了避免在使用选择器.Entry a
时应用.button
CSS样式,您应该使用选择器.button
覆盖.Entry a
例如:
.Entry a{color:black;text-decoration:underline};
.button {color:white;text-decoration:none;background:black;color:white And some other Styling};
答案 2 :(得分:2)
这是因为.Entry a
的特异性高于.button
。结果是,您的元素从background
收到了实际的.button
属性,但其color
和text-decoration
属性来自.Entry a
。
有几种方法可以“解决”这个问题:
.button
选择器的特异性。 .button
标签上使用a
,则可以更改选择器a.button
。这个新选择器具有与.Entry a
(一个标签值和一个类值)相同的特异性,因此“获胜者”由源顺序决定。如果a.button
位于CSS文件中的.Entry a
后面,a.button
会占据优势。.Entry a
选择器的特异性。 a
元素内的.Entry
个标签吗?您是否可以简单地将其作为所有a
标签的基本样式?如果可以,您只需将.Entry a
更改为a
即可。这个新选择器只有一个标记值,它不像.button
中的一个类值那样具体。.button
上定义额外的选择器。 .button, a.button
,以便第二个选择器接管第一个选择器失败的位置。请注意,当您遇到与input
或button
标记等其他标记相同的问题时,这可能会非常混乱。!important
。.big-button
样式的类。如果您想了解更多有关特异性的信息,请参阅good article,了解它的含义以及计算方法。
答案 3 :(得分:1)
在CSS3中你可以做到这一点:
.Entry a:not(.button)
这会限制您的.Entry a
规则影响.button
的任何元素。
如果CSS3不是一个选项(即你需要支持IE&lt; = 8),你需要覆盖任何无意中继承的样式。因此,例如,如果您的按钮最终带有来自.Entry a
的不需要的边框,请在.button
规则中覆盖此内容,例如
.button { border: none; /* more button styles */ }
答案 4 :(得分:1)
您可以覆盖.button
.Entry a
类中的任何样式
E.g。如果您不希望文字加下划线,可以使用text-decoration: none
.Entry a{
color: black;
text-decoration: underline;
}
a.button {
background: black;
color: white;
text-decoration: none;
/*And some other Styling*/
}
在css中使用大括号};
后也不要使用分号。只需使用大括号即可关闭}
答案 5 :(得分:0)
最简单的方法是“撤消”元素从.Entry a
的样式继承的特定样式。例如,要撤消文本修饰样式,可以使用text-decoration:none
。
如果您只需要它可以用于较新的浏览器,那么您可以使用@Jon提到的not()选择器。