【问题标题】:Applying a Stylesheet Within One Div Only仅在一个 div 中应用样式表
【发布时间】:2014-02-01 01:32:52
【问题描述】:

我有一个要添加一些功能的网站。该网站有点过时了,但我没有得到报酬来检修整个网站,只有几页。因此,我在这些页面上使用了更现代的代码,但这些页面上仍然有旧代码。由于旧代码(将保留而不被删除),我有一些 CSS 冲突。

是否可以使整个样式表仅适用于 div 中的样式。

例子:

<div class="style-sheet-modern">

<!-- My Stylesheet applies only within this div -->

</div>

我的第一个想法是将我的 css 重命名为 div。示例:

.style-sheet-modern .conflicting-class{ /* styles */ }

但是,这是不可取的,因为有几百行 CSS,我不想检查并重命名我的所有 CSS。也使得以后更新变得困难。

有没有办法在某个 div 中应用整个样式表,而不是页面上的其他任何地方?

【问题讨论】:

标签: css html


【解决方案1】:

当然,在大多数现代浏览器中。在 div 中添加 scoped stylesheet

<div class="style-sheet-modern">
    <style scoped>
    .conflicting-class { ... }
    </style>
</div>

您可以使用@import 来使用外部样式。请注意,对于不支持它的浏览器,它会将样式应用于整个页面。因此,您可能只想将 id 添加到您想要的 div 并使用它来设置样式,以实现兼容性。

【讨论】:

  • 谢谢。唯一的问题是它仅在 Firefox 中受支持。 Chrome 支持它,但必须手动启用。 -Source
  • 我确实找到了一个jQuery Plugin,它可以在不受支持的浏览器中启用它。
  • @Lynda 对不起,不知道糟糕的支持。该插件看起来很棒!我会说继续使用它。
  • 我要试一试。我们将看到会发生什么。 =>
  • 在 2018 年,any 浏览器(Firefox 除外,并且仅当用户在其偏好中启用实验性功能时)范围内的样式表不是 supported
【解决方案2】:

为什么不给&lt;div&gt; 一个ID?

那么您可以使用特异性来仅覆盖该 div 中的类/ID?

IE:

<div id="style-sheet-modern"> 
    <div class="my-class"></div>
    <div class="etc"></div>
</div>

然后您可以像这样定位“现代” div 中的所有样式:

#style-sheet-modern .my-class{
    color:black;
} 
#style-sheet-modern .etc {}

不会有浏览器支持问题。

如果您使用的是 less 或 sass 之类的东西 - 您甚至可以将它放在一个名为“style-sheet-modern.less”的单独文件中,或者任何您想要命名的文件中,然后在主样式的底部将其 @import文件。此包含需要位于文件的最后,以便覆盖可应用于这些相同样式的其他样式。

如有必要,您也可以使用通配符重置#style-sheet-modern 中的所有样式,如下所示:

#style-sheet-modern * {
    reset: stuff; //obviously not the actual css
}

这些样式的重置将是您的 'style-sheet-modern.*ss' 文件中的第一件事。

正如我之前提到的,没有浏览器支持问题。

【讨论】:

  • 一个样式表有数百个类,等等。我必须将它应用于每个类。不是一个有趣的任务。你还说:@import it at the bottom of your main styles.css。除非事情发生了变化,否则您不能在样式表中的任何地方使用@import,除非在样式表的顶部(在任何样式之前)。不是底部。
  • 哈哈,你对底部的@import 是正确的。我一般用LESS写,你可以在底部导入。但是,如果你把它(css)都放在底部,它会起作用。这是一个小提琴。 (通配符会重置具有指定 ID 的 div 内的所有样式。)jsfiddle.net/jvincilione/dC3Jj
  • 因此,基本上,所有“现代”类都以 ID 开头,并确保它们位于底部,仅在该对象内的对象上重置 CSS。
猜你喜欢
  • 1970-01-01
  • 2022-06-17
  • 1970-01-01
  • 2018-01-24
  • 1970-01-01
  • 2017-01-13
  • 2013-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多