我如何告诉页面忽略内部 CSS 而支持外部 CSS?

How do I tell a page to ignore internal CSS in favor of external CSS?

背景:我正在更新 Rails 应用程序中的页面样式(我希望 rails 部分与此问题无关),并且我添加了样式标签中的内部 CSS。现在我的页面主要部分看起来像我希望的那样,但是 bootstrap 导航栏也收到了 CSS 更改,因此导航栏的字体大小和许多其他方面现在都发生了变化,导致与站点的其余部分不一致。

问题:有没有办法告诉页面不要将内部样式应用于导航栏,而是使用外部样式?

将您的内部 CSS 封装在另一个 class* 中。 即向容器中添加一个唯一的 class,而不是包含所有 "main parts of the page",然后将该 class 附加到您在页面内部编写的选择器之前

DEMO(示例如下)

a { color: green; } /* this style applies to all plain a tags */
.xyz a { color: red; } /* this style only applies to a tags within an xyz class */

<div class="nav">
  <a>I am a green link</a>
</div>
<div class="xyz">
  <a>This is a red link</a>
</div>

*正如@isherwood 上面提到的,这将利用 specificity 达到您的目的

我想到了这两个解决方案:

第一个解决方案是管理链接的顺序。最新定义将应用于页面:

<style>
    body {
        background-color: red;
    }
</style>

<link rel="stylesheet" href="./main.css">

main.css:

body {
    background-color: green;
}

然后页面的正文将是红色背景。

第二个解决方案是使用JQuery或其他方法删除<style>元素。

P.S.:我不确定第二个解决方案的质量。

您可以在外部 css 文件中对您的 类 使用 CSS !important 规则,请看下面的示例

.myclass {
  color: blue!important;
}
<!DOCTYPE html>
<html>
<head>
</head>
<body>

<p style="color:red;" class="myclass">This is currently using external css </p>


</body>
</html>