【问题标题】:Am I messing with specificity ? What's going on?我在搞乱特异性吗?这是怎么回事?
【发布时间】:2021-08-29 13:58:46
【问题描述】:

我会简短而清晰。我有这个 html 代码 sn-p。

  <nav>
 <span class="heading"><a href="#">CodingHero</a></span>
        <ul>
            <li><a href="#Home" class="active">Home</a></li>
            <li><a href="#About">About</a></li>
            <li><a href="#Services">Services</a></li>
            <li><a href="#Contact">Contact</a></li>
         </ul>
   </nav>

现在我有了这个 CSS 部分

nav ul li a {
        font-family:'Poppins', sans-serif;
        font-size:20px;
        color:white;
        opacity:0.8;
        margin:0px 20px;
    }

这也没关系。但我在处理媒体查询时发现了这种奇怪的行为。

nav ul a {
            font-size:44px;
            background-color:yellow;
            margin:0px;
        }

我的背景颜色是黄色的。 但我的字体大小和边距不起作用。 一旦我提供了我最初在 CSS 部分中使用的特异性,

nav ul li a {
            font-size:44px;
            background-color:yellow;
            margin:0px;
        }

这行得通,我的字体大小和边距也生效了。 有人可以解释为什么我必须使用我最初用来让所有属性起作用的原始选择器吗? 为什么在应用同一部分的背景颜色时未应用我的字体大小和边距。 这里发生了什么?任何让我头脑清醒的资源。 任何回应表示赞赏。 谢谢!

【问题讨论】:

    标签: html css css-selectors css-specificity


    【解决方案1】:

    background-color:yellow; 被应用是因为另一个具有更高特异性的选择器(nav ul li a) 不包含 background-color 属性,因此没有任何内容会覆盖它。


    如果你要添加一个喜欢

    nav ul li a {
        font-family:'Poppins', sans-serif;
        font-size:20px;
        color:white;
        opacity:0.8;
        margin:0px 20px;
        background-color: red; /* added */
    }
    

    然后它将覆盖background-color:yellow,就像它覆盖marginfont-size

    【讨论】:

    • @T J 是的,这对于为什么我的背景被应用而不被应用是有道理的。但是另一个问题呢?在媒体查询中,我使用了 nav ul a 它没有做任何更改,也没有进行任何更改 anav a ,但只有我在 CSS nav ul li a 的第一部分中使用的相同选择器特异性进行了应用更改。为什么其他没有任何影响。我必须使用我第一次使用的相同选择器吗?也请帮我理清思路,或者您可以指出资源。
    • @Biebk “在媒体查询中,我使用了nav ul a 它没有做任何更改 - 这不是你说的在问题中。也许更新问题或用工作示例提出另一个问题,并根据它专门提出问题。我认为答案解释了您在问题中提到的内容,并且您的头脑过于复杂
    • 如果您想知道为什么在使用原始选择器时它会起作用,我想您已经知道它是如何工作的,因为您在问题中反复使用了 specificity 这个词。答案是特异性”。 developer.mozilla.org/en-US/docs/Web/CSS/Specificity
    • @T J 非常感谢!我已经对特异性知之甚少。但是,你说的话突然打动了我,我明白了我在搞什么。现在,我自己的问题对我自己来说听起来很愚蠢。但你花时间帮我解决这个问题。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2011-07-06
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 2011-06-28
    • 2022-01-23
    相关资源
    最近更新 更多