将CSS属性设置为特定低页面部分中给定标记的默认值的最佳,最易维护和可读的方法是什么。目前,我有一个页面,它从单独的全局样式表中的html
选择器获取全局默认字体样式。我的页面中有很大一部分(具有类dash
),我希望它具有不同的默认字体样式。
设置.dash h1 { font.... }
的主要问题是它具有非常高的特异性。每次我想为.dash
的后代元素设置字体样式时,我需要引用.dash
。由于我正在使用模块化设计,每个组件都是独立开发的,这是一个非常糟糕的主意。更明显的解决方案是设置!important
或使用ID,原因很明显。显然,在为html h1
或任何其他标记设置字体时,我们不会遇到此问题,因为所有标记的特异性都低于类。
是否有一种简单的低特异性方法来为标记设置CSS属性,这些标记是DOM中高位元素的后代,由类选择,以便可以通过将字体属性应用于另一个选择的元素来覆盖它。类?
答案 0 :(得分:1)
您可以使用.dash { font ... }
之类的规则设置字体属性,并为元素内部的元素设置字体属性,因为每个元素都会从适用于它的声明中获取字体属性,而不是其父级或其他方兴未艾。
例如,如果你有
<div class=dash>
some content
<h2>some heading</h2>
some content
</div>
然后设置
.dash { font-family: Cambria }
然后设置
没有问题h2 { font-family: Calibri }
没有引用dash
类。 h2
元素从后一个规则中获取其字体系列,完全独立于适用于其父级的规则。
答案 1 :(得分:0)
没有
.dash * { font
做你需要的吗?
在澄清评论和小提琴之后更新 ......
所以,我有你的问题&#34;倒退&#34;因为我以为你试图忽略所包含的html中的细节。
但我认为我的建议仍然有效,不是吗?
.dash * { color: red; }
.included-class { color: blue /* this will take precedence */ }
答案 2 :(得分:-1)
根据Harry Roberts的文章http://csswizardry.com/2014/07/hacks-for-dealing-with-specificity/#safely-increasing-specificity,我重复应用了同一个类,以便将该选择器的特异性提高到应用于该部分的特征(其本身简单地设置为.portion-class tag
)。 / p>
请参阅:
.btn.btn
。.dash-heading.dash-heading
请注意,当然,我认为DOM中元素的位置影响了特异性是错误的。