【问题标题】:Why bother with the "L" in the "LVHA" link styles?为什么要在“LVHA”链接样式中使用“L”?
【发布时间】:2012-04-28 14:56:10
【问题描述】:

“a:link”伪类不是和“a”重复的(:link, :visited, :hover, :active)吗?为什么放这个:

a:link {color: blue;}
a:visited {color: purple;}
a:hover {color: red;}
a:active {color: yellow;}

什么时候可以这样说:

a {color: blue;}
a:visited {color: purple;}
a:hover {color: red;}
a:active {color: yellow;}

我问是因为第一个是我看到的 LVHA 订单最常见的例子。第二个版本具有相同的特异性,因此它的功能相同。当链接状态发生变化时,弄清楚发生了什么变化只是一个组织的事情吗?我错过了什么?

【问题讨论】:

    标签: css css-selectors


    【解决方案1】:

    并非所有锚标记都必须具有href 属性,因此它们并非都是链接。大概:link 伪类不适用于没有href 的锚标记。

    【讨论】:

    【解决方案2】:

    pseudo-classes :link and :visited 仅用于链接(具有href 属性的A 元素):

    • :link 伪类适用于尚未访问的链接。
    • 一旦用户访问了链接,就会应用 :visited 伪类。

    […]

    文档语言决定了哪些元素是超链接源锚。例如,在 HTML4 中,链接伪类适用于具有“href”属性的 A 元素。

    pseudo-classes :hover, :active and :focus 不仅用于链接,还可以应用于其他元素,例如inputtextarea

    所以要正确并只选择实际上是链接的A 元素,您需要使用a:link。要仅选择悬停的链接,您需要使用a:link:hover 而不仅仅是a:hover

    【讨论】:

    【解决方案3】:

    根据W3C specification

    :link 伪类适用于尚未访问的链接。

    :link 允许您为未访问的链接设置样式,同时不影响其他链接样式。

    【讨论】:

    • 未访问的链接也使用{...}
    • 当然,但是 { ... } 会改变所有伪类的样式。仅“a {color: red}”将使已访问、未访问、悬停和活动链接显示为红色前景色,而“a:link {color: red}”只会使未访问链接显示为红色前景色。
    • 但这个问题也特定于正在定义的其他 3 个州。
    • 严格来说,a 不会影响任何伪类状态(因为它只是一个类型选择器!)。只有当您为各种伪类指定样式时,它们才会覆盖任何通用的a 规则。此外,a:hovera:active 也可以选择a:link 样式,因为它们不是相互排斥的——这只影响a:visited。换句话说,任何链接都可以是a:link:hovera:link:active,甚至是a:link:hover:active,但不能是a:link:visited
    猜你喜欢
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 2017-08-28
    • 2010-12-26
    • 1970-01-01
    • 2011-03-29
    • 2014-09-01
    相关资源
    最近更新 更多