用我自己的方法覆盖CDN CSS

时间:2017-01-24 15:19:28

标签: css cdn

从CDN样式表覆盖CSS规则的最佳方法是什么?

例如,我想在所有锚定文本上使用文本修饰:

a{text-decoration: underline !important;}

因为bootstrap有:

a{text-decoration: none;}

有更好的方法吗?

3 个答案:

答案 0 :(得分:3)

!important不需要像这样的选择器。只需确保你的规则在引导程序规则之后,你会没事的。

<link rel="stylesheet" href="//bootstrap.cdn.url.wow.css">
<style>
  a {
    text-decoration: underline;
  }
</style>

答案 1 :(得分:1)

是的,当替代方法是使用!important时,通常会有更好的方法。使用更高的specificity。换句话说,使您的选择器更具体,以便它覆盖Bootstrap选择器。例如,body a{text-decoration: none;}

根据链接文章:

  

您可以考虑:

,而不是使用!important      
      
  • 更好地利用CSS级联属性
  •   
  • 使用更具体的规则。通过在元素之前指示一个或多个元素&gt;
  • ,您选择的规则会变得更具体,并具有更高的优先级   

只有在绝对没有其他选项时才使用!important

答案 2 :(得分:0)

在处理CDN样式表(我做了很多)时,使用!important覆盖规则的安全可靠选项是使用!important

是的,你可以用特异性技巧和级联法术全力以赴。但最终,您的代码复杂化,难以理解和维护,最重要的是,并不总能确保您的规则占上风。

如果由于某种原因存在#goog-gt-tt .translate-form .activity-form input.activity-submit.focus #goog-gt-tt .translate-form .activity-form input.activity-submit:active,我认为就是这样:要覆盖您无法控制的CDN和其他第三方样式。

编辑(经过一些强烈反对; - )

这个问题可能只专注于Bootstrap CDN。其他答案可能满足该情况。我不使用Bootstrap。

我对第三方CSS的体验主要涉及嵌入式工具,例如搜索,翻译,视频和幻灯片。

这些程序并不总是以相同的顺序加载样式表。所以依靠级联不是一个好的解决方案。

有时候CDN选择器已经超过&#34; maxed-out&#34;为了特异性。以下是Google翻译小部件中的示例:

!important

可以为该选择器添加特异性,但会使代码更加复杂和难以理解。

同样重要的是:第三方可以随时更改选择器的特异性,迫使您调整自己。

出于这些原因,我通常会下载CDN样式表的副本,并使用!important进行调整。

(在检查开发工具时,添加map也有助于区分您的样式与CDN。)