使用 JavaScript 在运行时编辑 CSS(更改选择器):防止在 DIV 内应用
Editing CSS (changing selectors) at runtime with JavaScript: prevent application inside DIV
我希望能够阻止 CSS 文件应用于 DIV 标签的内部。
CSS 文件包含在 HTML 文档的 <head>
部分中。我无法删除文件或更改它。我所能控制的只是 DIV 标签的内部。 HTML 文档是用 MediaWiki 生成的,所以我不允许使用 iFrame。我无法在其他任何地方托管我的内容,但我可以获取 CSS 和 javascript 等外部资源,上传它们,并将它们包含在我的 DIV.
内部
目前,我有 Jquery,我可以包含各种外部库。
使用 jQuery 找到 <link rel="stylesheet" href=...>
然后 .remove()
确实有效,但这会弄乱页面的其余部分,我被很多人阻止了繁文缛节。
有没有办法 "javascriptically" 对样式表做一些事情,使其仅适用于不在我的 DIV 中的任何内容?也许使用 :not()
选择器?
我不知道,而且我以前从未接触过 not
选择器。请帮忙。谢谢。
您无法阻止 CSS 应用于文档的一部分,即使您可以更改它(只要您不关心,Javascript 是可行的没有 Javascript) 的用户。基本上你有两个选择:
- 覆盖 CSS。可能最不痛苦的方法是采用一些 CSS reset 样式表并为每个规则添加前缀,以便 #1 它仅适用于您的 div,#2 它具有足够高的特异性以覆盖所有 MediaWiki 规则。然后您可以在其上应用您自己的样式。
- 使 div 不是文档的一部分。您可以在 Javascript 中创建一个 iframe,然后将 DIV 的内容移到那里。 (Shadow DOM 会是一个更好的方法,但还没有太多的浏览器支持。)
我希望能够阻止 CSS 文件应用于 DIV 标签的内部。
CSS 文件包含在 HTML 文档的 <head>
部分中。我无法删除文件或更改它。我所能控制的只是 DIV 标签的内部。 HTML 文档是用 MediaWiki 生成的,所以我不允许使用 iFrame。我无法在其他任何地方托管我的内容,但我可以获取 CSS 和 javascript 等外部资源,上传它们,并将它们包含在我的 DIV.
目前,我有 Jquery,我可以包含各种外部库。
使用 jQuery 找到 <link rel="stylesheet" href=...>
然后 .remove()
确实有效,但这会弄乱页面的其余部分,我被很多人阻止了繁文缛节。
有没有办法 "javascriptically" 对样式表做一些事情,使其仅适用于不在我的 DIV 中的任何内容?也许使用 :not()
选择器?
我不知道,而且我以前从未接触过 not
选择器。请帮忙。谢谢。
您无法阻止 CSS 应用于文档的一部分,即使您可以更改它(只要您不关心,Javascript 是可行的没有 Javascript) 的用户。基本上你有两个选择:
- 覆盖 CSS。可能最不痛苦的方法是采用一些 CSS reset 样式表并为每个规则添加前缀,以便 #1 它仅适用于您的 div,#2 它具有足够高的特异性以覆盖所有 MediaWiki 规则。然后您可以在其上应用您自己的样式。
- 使 div 不是文档的一部分。您可以在 Javascript 中创建一个 iframe,然后将 DIV 的内容移到那里。 (Shadow DOM 会是一个更好的方法,但还没有太多的浏览器支持。)