gpt4 book ai didi

css - 为什么.foo a :link, .foo a :visited {} selector override a:hover, a :active {} selector in CSS?

转载 作者:技术小花猫 更新时间:2023-10-29 10:22:22 27 4
gpt4 key购买 nike

示例代码:http://jsfiddle.net/RuQNP/

<!DOCTYPE html>
<html>
<head>
<title>Foo</title>
<style type="text/css">
a:link, a:visited {
color: blue;
}

a:hover, a:active {
color: red;
}

.foo a:link, .foo a:visited {
color: green;
}

/* A possible fix */
/*
.foo a:hover, .foo a:active {
color: red;
}
*/
</style>
</head>
<body>
<div class="foo">
<a href="http://example.com/">Example</a>
</div>
</body>
</html>

我所期待的:

悬停时链接会显示为红色。

我得到的:

悬停时链接显示为绿色。

问题:

  1. 为什么 .foo a:link, .foo a:visited 中定义的color选择器覆盖 a:hover, a:active 中的选择器?这是怎么回事?
  2. 我知道我可以修复它并通过取消注释获得我期望的结果注释的代码。但是,我想知道我们怎样才能纠正.foo a:link, .foo a:visited 选择器这样它就不会覆盖 a:hover, a:active?
  3. 中定义的 color

如果我明白http://www.w3.org/TR/CSS21/cascade.html#specificity正确地(感谢 BoltClock),这是代码中各种选择器的特异性表。

a:link         - 0 0 1 1
a:visited - 0 0 1 1
a:hover - 0 0 1 1
a:active - 0 0 1 1
.foo a:link - 0 0 2 1
.foo a:visited - 0 0 2 1

因此,当 link 时,为 .foo a:link 定义的样式会覆盖 a:hover 的样式>hover 伪类应用于 foo 类的 A 元素。

同样,当 visited 时,为 .foo a:visited 定义的样式会覆盖 a:hover >hover 伪类应用于 foo 类的 A 元素。

最佳答案

当您第一次开始使用 CSS 时,您可能已经了解了 LoVe-HAte 助记符,用于指定链接选择器的顺序(a:linka:visited, a:hover, a:active).你有没有想过为什么选择这个助记词?

嗯,spec 中有一条注释关于当使用所有这些规则的多个规则应用于同一元素时如何处理链接和动态伪类,这解释了为什么需要按该顺序设置链接选择器:

Note that the A:hover must be placed after the A:link and A:visited rules, since otherwise the cascading rules will hide the 'color' property of the A:hover rule. Similarly, because A:active is placed after A:hover, the active color (lime) will apply when the user both activates and hovers over the A element.

无论如何,我在上面试图说明的一点是所有四个伪类,作为伪类,具有相同的特异性。关于特异性的其他一切都适用。在这种情况下,从一堆同样具体的选择器中,应用最后一个规则。每个伪类何时或如何被触发是无关紧要的。

现在,.foo 选择器的简单介绍会导致您的第二组链接/访问规则覆盖您的第一组链接/访问样式悬停/事件样式,强制具有该类的元素中的链接始终显示为绿色,直到您使用 .foo 选择器添加悬停/事件样式。


很抱歉,如果我的回答看起来有些含糊或草率,我现在正在我的 iPhone 上输入这个,这里很难想清楚...

关于css - 为什么.foo a :link, .foo a :visited {} selector override a:hover, a :active {} selector in CSS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7371732/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com