删除所有 CSS 规则

Posted

技术标签:

【中文标题】删除所有 CSS 规则【英文标题】:Remove all CSS rules 【发布时间】:2010-09-04 21:11:36 【问题描述】:

有没有办法在加载样式表后清除所有 CSS 规则?

我必须使用构建在 Dojo 之上的专有 javascript 库 (ESRI's ArcGIS Server API)。我广泛使用 Dojo 的小部件,并希望使用 Dojo 的 claro 主题,但不幸的是,ESRI 库通过加载非现场 CSS 文件(并且可能是在 JS 中硬编码的 CSS 规则)来修改 CSS。这最终破坏了 Claro 主题。

如此多的 Dojo 小部件 CSS 类被重写并创建了新规则,仅清除所有 CSS 并重新加载标准 Dojo 样式表似乎更容易/更安全。

类似以下的内容会很好:

* none

但我认为我最终必须使用 Dojo 或 jQuery 来完成此操作。

【问题讨论】:

【参考方案1】:

查看 Paul Irish 的 RefreshCSS 小书签:

javascript:(function()var h,a,f;a=document.getElementsByTagName('link');for(h=0;h<a.length;h++)f=a[h];if(f.rel.toLowerCase().match(/stylesheet/)&&f.href)var g=f.href.replace(/(&|%5C?)forceReload=\d+/,'');f.href=g+(g.match(/\?/)?'&':'?')+'forceReload='+(new Date().valueOf()))()

它刷新页面上的 CSS 样式表,而不刷新页面本身。

我认为你可以对它进行一些改动,让它做你想做的事?

使用 jQuery 的另一种可能可行的方法是在页面加载后运行它:

$('head link, head style').remove();

【讨论】:

我不知道为什么,但是在您的代码中有一些转义字符,例如 <和&.这是(希望格式正确)代码:javascript:(function()var h,a,f;a=document.getElementsByTagName('link');for(h=0;h&lt;a.length;h++)f=a[h];if(f.rel.toLowerCase().match(/stylesheet/)&amp;&amp;f.href)var g=f.href.replace(/(&amp;|\?)forceReload=\d+/,'');f.href=g+(g.match(/\?/)?'&amp;':'?')+'forceReload='+(new Date().valueOf()))()【参考方案2】:

不。可悲的是,这样的事情并不存在。

这些相关问题的答案大致概括了解决方法方面的可能性。

Is there a way to “sandbox” an html block away from its page's CSS without using iframes?

Reset CSS for a certain area of the page?

prevent meyer reset css to mess with dynamic content

How to reset css in middle of html document ?

【讨论】:

【参考方案3】:

总是有document.head.innerHTML = ""; 但它真的清理了房子,所以你必须存储任何脚本、元标记、标题或任何你想保存的东西并再次添加它们。

【讨论】:

以上是关于删除所有 CSS 规则的主要内容,如果未能解决你的问题,请参考以下文章

冲突的 CSS 规则如何影响性能?

获取代码中使用的所有 CSS 类选择器,这些选择器没有定义 CSS 规则集 [关闭]

获取 Google Chrome 开发工具中选定元素的所有 CSS 规则

CSS规则:为所有有孩子的人赋予样式[重复]

与 IE10+ 相比,是不是有一种巧妙的方法来获取 IE9 不支持的所有 CSS 规则?

在一对多关系中,是不是有删除规则在删除其最后一个成员时删除所有者?