【问题标题】:Override CDN CSS with my own用我自己的覆盖 CDN CSS
【发布时间】:2017-01-25 00:47:56
【问题描述】:

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

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

a{text-decoration: underline !important;}

因为引导程序有:

a{text-decoration: none;}

有没有更好的办法?

【问题讨论】:

  • 在你的情况下,你只需要使用a { /* your style here */ }。只需在 cdn 样式表之后加载即可。

标签: css cdn


【解决方案1】:

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

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

【讨论】:

  • 我也这么认为。但由于这里有其他高代表用户的回答而完全困惑:/
  • @Mr_Green 如果特异性相同,那么是的,在 Bootstraps 之后加载你的 CSS 规则将占上风
  • 是的。我完全不同意@Michael_B 的回答。
  • @j08691 的回答很好,但是当您可以控制源顺序时,没有理由在这里使用更多的特异性。
  • @BillCriswell 谢谢。我提倡特异性的原因是,无论你在哪里加载它都会胜出,而且很多时候用户无法加载一个又一个的样式表。
【解决方案2】:

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

根据链接的文章:

不使用 !important,您考虑:

  • 更好地利用 CSS 级联属性
  • 使用更具体的规则。通过在元素之前指明一个或多个元素 > 您选择的规则变得更加具体并获得更高的优先级

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

【讨论】:

    【解决方案3】:

    在处理 CDN 样式表(我经常这样做)时,使用自己的规则覆盖其规则的安全可靠的选择是使用 !important

    是的,你可以用特殊技巧和级联魔法全力以赴。但最终,您会使代码复杂化,使其难以理解和维护,最重要的是,您并不能确保您的规则始终有效。

    如果 !important 存在的原因有一个,我想就是这样:覆盖 CDN 和其他您无法控制的第三方样式。


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

    这个问题可能只针对 Bootstrap CDN。其他答案可能满足这种情况。我不使用 Bootstrap。

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

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

    有时,CDN 选择器已经“最大限度地利用”了特定性。以下是来自 Google 翻译小部件的示例:

    #goog-gt-tt .translate-form .activity-form input.activity-submit.focus #goog-gt-tt .translate-form .activity-form input.activity-submit:active

    向该选择器添加特定性是可能的,但会使代码更加复杂和难以理解。

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

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

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

    【讨论】:

    • 教我一些新的东西,downvoter。正如我所提到的,我经常这样做。如果您有更有效和更有效的方法,老实说,我全神贯注。
    • [Not the downvoter] 难道我们不能在 cdn 之后加载样式表来覆盖样式吗?这适用于普通样式表,所以我假设它也适用于 CDN。不过,我认为从 CDN 加载并不重要。
    • @j08691 方法如下:在许多情况下,选择器已经很长了。对我来说,要覆盖它们需要使它们更长。其次,第三方 CSS 选择器的特性经常发生变化。然后我也必须调整我的特异性。
    • 同样,这可能不是 Bootstrap 问题。但是在处理了许多在线小部件和工具之后,我发现唯一有效、有效和可靠的方法是使用!important。我可以向后弯腰以进行特异性和级联工作吗?可能在某些情况下。 !important 有什么问题?这似乎是它的完美用例。
    • @Mr_Green,在我的回答中添加了更多详细信息。希望它能解决你的困惑。
    猜你喜欢
    • 2014-11-25
    • 2016-09-06
    • 2019-01-10
    • 2018-02-11
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 2011-07-24
    相关资源
    最近更新 更多