我有一些HTML标记& css样式将嵌入数千个不同的网站。我希望此部分仅使用我自己的样式表,而忽略原始网站的CSS。
除了为所有类和id使用唯一的前缀之外,有没有办法不在某个区域应用网站范围的CSS规则,只使用我自己的样式?
答案 0 :(得分:1)
用户CSS中的FYI !important
声明将始终胜过CSS作者和用户代理(资源:the cascade on Sitepoint),但这不是您竞争的对象 with。
完全忽略页面的其余部分afaik(CSS中的C是有原因的; ))。但是,这里有一堆应该有用的东西:
!important
非常强大。只有具有此修饰符的其他声明才有可能仍然应用id
具有很强的特异性。具有412个类且没有id的选择器具有比具有1个id且没有类别的选择器更少的特异性(根据OOCSS和基于它的css linters,这是不好的原因.Ymmv).c.c { prop:val}
:.c {}
的特异性的两倍和完全相同的范围。想象一下id
;)(你也可以在一个元素的每个祖先都有一个id,但你不能在同一个元素上有2个id)不要忘记可能适用于客户网站的媒体查询中的声明:您(或您的客户)在调整浏览器大小之前不会看到它们。
我非常关心在一般规则中没有太多特异性,然后在默认解决方案中没有特定规则,但在给定项目的最后一个MQ(320或1600+)中,我不再关心它是否&# 39;对我来说更方便(即更快)因为我知道我以后不需要覆盖它。如初。
编辑:不要忘记考虑假:before
和:after
。 Normalize.css现在声明*, *:before, *:after { (-prefix-)box-sizing: border-box }
,如果您也使用它们,这可能会令人惊讶。最好不要使用它们,因为它们不能在样式属性中设置样式(与MQ相同的问题)
为了消灭这些伪可能具有的任何风格,这段代码:
high-specificity-selector *:before,
high-specificity-selector *:after {
content: none !important
}
应该足够了:没有内容,没有伪 / EDIT
如果您对您的项目非常认真(成千上万个网站,哇),您还可以自动测试客户网站上的CSS申请情况,测试验证: