我正在重新设计第三方平台(MindTouch 4)。在这样做的同时,我试图尽可能广泛地声明所有各种样式属性,以防止页面上原生样式区域的无意扩散。
该平台有一个自定义 SELECT 控件,使用如下标记:
<div class="mt-site-nav">
...
<span class="quick-more">
<span class="drop-link">Current Value</span>
<ul class="dropdown">
<li>
<a href="...">Option 1</a>
</li>
<li>
<a href="...">Option 2</a>
</li>
</ul>
</span>
</div>
我希望设置字体大小为 14px 的选项文本;本机默认值为 12px。
所以,我写了这个 CSS 规则:
body#myid .mt-site-nav .quick-more .dropdown { font-size: 14px; }
但是,在呈现菜单中的链接时,他们的原生规则仍然获胜:
@media screen { .dropdown li a { font-size: 12px; } }
在 Chrome 中,我可以看到在菜单中呈现链接时会考虑这两个规则,但它们的规则(比我的更早声明)获胜。我对此感到困惑,因为我认为我对特异性有很好的把握。所以,我检查 了我对 规则的理解,并手动计算了两个规则的权重。
我的具有特异性 0131(0 内联样式,1 个 ID,3 个类,1 个元素名称)。
Native 具有特异性 0032(0 个内联样式,0 个 ID,1 个类,2 个元素名称)。(我不确定如何计算媒体选择器在原生规则中的贡献。)
我不在乎您使用什么基础进行数学运算,“0131”大于“0032”。所以,我的规则应该赢。
是的,我可以轻松复制出现在原生规则中的元素链(即“.dropdown li a”),但我认为这是一种脆弱的方法,我认为尽可能广泛地设置样式属性以促进可扩展性很重要并且作为防止在裂缝之间偷看的原生样式的预防措施。
感谢您对解决此问题的任何帮助。我显然有可行的替代方案,所以我在这里要求的是对这两条规则在 CSS 加权系统中的影响的学术解释。
非常感谢。