代码之家  ›  专栏  ›  技术社区  ›  Zach Luke Hutchison

层叠:悬停?

  •  3
  • Zach Luke Hutchison  · 技术社区  · 15 年前

    嘿,我有一些样式要做,但我不知道如何使用常规的没有JS的CSS。

    我的HTML如下:

        <div class="book">
            <span class="title">Snow Crash</span>
            <span class="author">Neal Stephenson</span>
        &lt/div>
    

    我的CSS是这样的:

        div.book span.title { color: black; }
        div.book span.author { color: gray; }
        div.book:hover { color: orange; }
    

    我希望作者和标题在任何时候都是橙色的DIV悬停,即使我已经设置为不同的颜色通常。跨距不会从div继承color属性,因为它们设置了自己的颜色,并且除非您将鼠标悬停在跨距本身上,否则跨距的悬停将不会激活。我可以在不使用JavaScript的情况下做到这一点吗?

    2 回复  |  直到 15 年前
        1
  •  5
  •   hunter    15 年前
    div.book span.title { color: black; }
    div.book span.author { color: gray; }
    div.book:hover, div.book:hover span.title, div.book:hover span.author
    {
        color: orange; 
    }
    
        2
  •  1
  •   Metagrapher    15 年前

    规则 div.book:hover 不会覆盖 div.book span.title div.book span.author 因为后者比前者更具体。您需要执行以下任一操作:

    div.book span.title { color: black; }
    div.book span.author { color: gray; }
    div.book span.author:hover, div.book span.title:hover { color: orange; }
    

    或:

    div.book span.title { color: black; }
    div.book span.author { color: gray; }
    div.book:hover { color: orange !important; }
    

    我一般建议不要使用 !important 除非绝对必要。

    另外,我警告说这是CSS3,并且只在现代浏览器版本中实现。

    编辑: 这是第三种选择:

    div.book:hover span.title, div.book:hover span.author { color: orange; }