【问题标题】:Please help me to understand the following CSS code请帮助我理解以下 CSS 代码
【发布时间】:2014-01-15 08:53:22
【问题描述】:

无论如何,我不是 CSS 专家。通常情况下,我能够通过自己的方式了解我在看什么,然后能够将它塑造成我想要的。

话虽如此,以下 CSS 行让我摸不着头脑,我找不到任何东西来帮助我澄清它。

#testmenu li:hover > a{
    color: #fafafa;
}

我理解在 testmenu ID 中对 li 悬停的引用,但 "> a" 让我迷失了方向。这是怎么回事?

【问题讨论】:

标签: html css


【解决方案1】:

> 表示a 元素是li 的直接子元素。 MDN 文档很好地描述了这个selector

这里是一些演示选择器的 HTML:

<ul id="testmenu">
    <li><a href="#">Will be selected</a></li>
    <li><div><a href="#">Will not be selected</a></div></li>
</ul>

JS 小提琴: http://jsfiddle.net/7ePEr/

【讨论】:

  • "direct" 是多余的,DOM 没有任何非直接的子元素。
  • @Lee 很高兴我能帮上忙。
  • @Quentin by direct 我指的是元素的非孙子。 MDN 文档似乎与这种措辞相呼应,The &gt; combinator separates two selectors and matches only those elements matched by the second selector that are direct children of elements matched by the first. 虽然没有必要,但我认为直接有助于强调这一点。
【解决方案2】:

&gt; 是子组合子。它要求右边匹配的元素是左边匹配的元素的子元素。

另见the Selectors specification

【讨论】:

    【解决方案3】:

    li:hover &gt; a 引用一个a 元素,它是li 的直接子元素

    jsfiddle W3C Documentation

    <ul id="testmenu">
        <li>
            <a href="#">I will change color on hover</a>
        </li>
        <li>
            <div>
                <a href="#">I will not</a>
            </div>
        </li>
    </ul>
    

    【讨论】:

      【解决方案4】:

      找到 id=testmenu。得到所有的后代。按&lt;li&gt;s 过滤后代,并悬停在上面。得到所有的孩子。按&lt;a&gt;s 过滤子级。

      【讨论】:

        【解决方案5】:

        选择器正在选择一个a 元素,它是一个li 的直接子元素(向下不是很多层,是一个直接后代),该元素悬停在它上面是一个id 为testmenu 的元素的后代

        【讨论】:

          猜你喜欢
          • 2023-03-19
          • 2021-02-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-15
          • 1970-01-01
          相关资源
          最近更新 更多