似乎无法让一个类重写 a:link 的继承样式
@Html.ActionLink("Back to List", "Index", null, new { @class = "htmlactionlink" })
CSS
a:link, a:visited,
a:active, a:hover
{
color: #333;
}
.htmlactionlink {
color: red;
}
不影响元素的样式?
如果我应用内联样式,它会起作用。
似乎无法让一个类重写 a:link 的继承样式
@Html.ActionLink("Back to List", "Index", null, new { @class = "htmlactionlink" })
CSS
a:link, a:visited,
a:active, a:hover
{
color: #333;
}
.htmlactionlink {
color: red;
}
不影响元素的样式?
如果我应用内联样式,它会起作用。
答案在于理解 CSS:6.4.3 Calculating a selector's specificity。小提取物
选择器的特异性计算如下:
也就是说:
第 3 点说,相同的优先级值适用于类和伪类(在 w3schools.com 中查看更多信息)
这意味着,该计算为
a:link is { a=0, b=0, c=1, d=1}
尽管
.htmlactionlink is { a=0, b=0, c=1, d=0}
这就是为什么该a:link
语句优先的原因,因为它需要 1 分代表类,1 分代表元素名称。
笔记:
从我的角度来看,最正确的解决方案是
.htmlactionlink:link, .htmlactionlink:visited ... {
color: red;
}
在这种情况下,我们确实得到 { c=2 , d=0},我们不像简单的A.htmlactionlink
{c=1, d=1}那样计算顺序