CSS优先级和针对特定元素

Ale*_*ter 4 html css css-selectors css-specificity

我的问题应该是相当紧张的.出于某种原因,我今天无法绕过它.

我正在制作一个像这样结构的菜单

<div class="wrapper">
    <ul>
        <li class="menu-item"><a href="#">Menu Item</a>
            <div class="inner">
                <a href="#">Login</a> 
            </div>
        </li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

我试图使用以下css选择器来定位登录链接:

.inner a{}
Run Code Online (Sandbox Code Playgroud)

选择器正在工作,但是以下选择器正在使用css,并覆盖上面的选择器:

li.menu-item a{}
Run Code Online (Sandbox Code Playgroud)

我完全不知所措.为什么第二个选择器会优先考虑第一个?你们怎么建议我瞄准上面的"a"元素?

adr*_*ift 10

为什么第二个选择器会优先考虑第一个?

因为第二个选择器比第一个更具体.第一个包含一个类和一个类型选择器,而第二个包含一个类和两个类型选择器.

要计算特异性,可以将选择器视为四个数字的组合,所有数字都从(0,0,0,0)开始

  • 内联样式具有最高的特异性,将取代第一个数字(1,0,0,0).
  • ID的计数为第二个数字(0,1,0,0)
  • 类,伪类(除了:not())和属性选择器计为第三个数字(0,0,1,0)
  • 类型选择器和伪元素 - 例如div {}::after{} 计为第四个(0,0,0,1)

也: