仅当用户启用了JavaScript时才使用一些CSS

仅当用户启用了JavaScript时才使用一些CSS,javascript,jquery,html,css,Javascript,Jquery,Html,Css,为了让我的网页优雅地降级,我有一些CSS,只有在其相应的JavaScript正常工作时才应该加载 当且仅当浏览器启用了JavaScript时,加载本地CSS的最简单方法是什么 另外,它是一个相当大的CSS块,所以我不想写一行JavaScript来添加每个属性。(哦,如果需要,我可以使用jQuery)。在中,您可以将其包含在文档中。write()。我从未尝试过这个,但理论上应该是可行的。没有脚本执行意味着没有加载样式表 <head> <script type='text/ja

为了让我的网页优雅地降级,我有一些CSS,只有在其相应的JavaScript正常工作时才应该加载

当且仅当浏览器启用了JavaScript时,加载本地CSS的最简单方法是什么

另外,它是一个相当大的CSS块,所以我不想写一行JavaScript来添加每个属性。(哦,如果需要,我可以使用jQuery)。

中,您可以将其包含在
文档中。write()
。我从未尝试过这个,但理论上应该是可行的。没有脚本执行意味着没有加载样式表

<head>
  <script type='text/javascript>
   document.write("<link rel='stylesheet' href='your.css' media='whatever />");
  </script>
</head>

");

在“noJS”的body标记上设置一个类。然后使用Javascript删除该类


对于不存在JS时要使用的CSS规则,只需使用
.noJS.myRules{}

查看的主体条件,了解如何使用Modernizer

这里还有一个很好的例子:


然后为.no js.addl选择器{}

编写css选择器。您有几个选项

我喜欢的一个是在body标签中添加以下代码

<body id="no-js"><script>document.body.id="js"</script>
document.body.id=“js”
然后我可以从我的主CSS中瞄准
#no js
#js

另外一个选项是使用JavaScript加载额外的样式表,但这会降低初始加载速度,我尽量避免这种情况。

我只是这样做:

document.documentElement.className = "js"
这会将class
js
添加到
标记中,然后您可以使用以下css将元素作为目标:

.js #someid{}

我并不是说要学究,但如果你的CSS依赖javascript来确保外观正确,那么它并没有真正将显示与内容分开。也可以看看modernizr.com……也许他的意思是,只有启用了javascript才能显示元素的CSS,比如增强的UI组件。@d_r_我的意思是学究,CSS没有如果HTML看起来不正确,那么当它通过CSS样式表中存储的信息进行样式设置时,HTML就会这样做。只要这些信息在样式表中,它就会被分离。JS可以更改HTML的状态,在这种情况下,新的HTML应该依赖CSS来告诉它如何查看。这就是分离关注点。(所有抽象都会泄漏)。如果javascript不起作用,我需要页面以不同的方式呈现-相同的内容,但本质上是不同的查看方式。(我已经用一种我确信非常有意义的方式表达了这一点:P)+1我肯定会在我的
文档之前使用它。write()
建议这是我应该做的,然后你可以在应该的时候加载css(页面上的第一件事),然后立即执行javascript(只有将类添加到主体中的部分)。所有内容都将很好地加载。谢谢,最后这是一个非常简单的修复:)-虽然我实际上已经添加了一个js类,但这是相同的区别。非常优雅。谢谢!