【发布时间】:2017-06-12 07:21:27
【问题描述】:
这看起来很简单,但我相信我想得太多了,以至于无法让它发挥作用。
我有我的默认超链接样式:
a {
text-decoration: none;
color: blue;
}
a:hover {
color: red;
}
a:visited {
color: purple;
}
我还有一些按钮样式:
.button {
padding: 0.4em;
border: 1px solid #535353;
color: #535353;
}
最后,我有一些全局类被添加到元素中以自定义字体颜色:
.color-green {
color: green;
}
.color-yellow {
color: yellow;
}
所以我的问题是处理超链接按钮,例如:
<a class="button" href="#">A button</a>
我希望任何带有button 类的链接在其默认状态、悬停和访问状态下都为color: #535353;。按钮应该始终是那种颜色...除非...
除非按钮有颜色类,如:
<a class="button color-green" href="#">A green button</a>
如果按钮具有颜色类,则颜色应更改为指定的任何颜色类...这包括所有状态(默认、悬停、已访问)。
我遇到的问题只是超链接按钮的:hover 和:visited 状态。例如,如果按钮具有颜色类,则在悬停时颜色始终变为红色。
我怎样才能更新这个,如果一个按钮有一个颜色类,它在所有状态下都是那个颜色?
请记住,颜色类用于各种元素(div、span、p 等),按钮类也用于链接、提交按钮、div 等。
另外请注意,我有一个超链接 color-yellow,但我仍然希望超链接继承默认的超链接悬停颜色。我只想要 button 类的任何东西来忽略默认的超链接悬停和访问的颜色。
a {
text-decoration: none;
color: blue;
}
a:hover {
color: red;
}
a:visited {
color: purple;
}
.button {
width: auto;
padding: 0.4em;
border: 1px solid #535353;
color: #535353;
}
.color-green {
color: green;
}
.color-yellow {
color: yellow;
}
<a href="#">Normal hyperlink</a>
<a class="color-yellow" href="#">Yellow normal, red hovered</a>
<a class="button" href="#">Default button</a>
<a class="button color-green" href="#">Green color button</a>
【问题讨论】:
-
另一种解决方案是使用多个选择器,也就是所有同样是按钮的
<a>元素可以使用a.button{//code}、a.button:hover{//code}和a.button:visited{//code}设置不同的样式