我经常遇到以下问题:
我有类似于以下内容的标记:
<body>
<div id="wrapper">
<div id="header"><a href="/">home</a>
</div>
<div id="left-column">
<ul>
<li><a href="/1">one</a></li>
<li><a href="/2">two</a></li>
</ul>
</div>
<div id="main-content">
<p><a href="#">some link</a> lorem ipsum</p>
</div>
</div>
</body>
大规模想象一下,通常有许多不同的导航项、段落和高级内容。
我试图遵循 OOCSS 和模块化 CSS 原则,避免基于位置的样式,但在许多情况下,CMS 不够灵活,无法在任何地方添加类。
因此,为了在 main-content 中设置所有链接的样式,我最终会这样做:
a {border:1px solid #000;}
但不知何故,我所有的链接left-column
最终都带有边界。然后我必须去重写:
#left-column a {border:0;}
这是混乱的开始。对于您所做的每一项更改,a
您都必须为所有“例外”添加重置样式。
然后我尝试
#main-content a {border....}
但这更糟。为什么?因为 id 是一个强大的选择器,它会覆盖 #main-content 中通常不应该应用边框的链接。
有什么建议可以在不重置的情况下进行有效的链接样式设置吗?如果 CSS "Scope" 还不是候选发布模块,CSS 原生提供了哪些工具来解决这个问题?例如,规则的出现顺序会有所帮助吗?