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

时间:2011-07-21 16:23:32

标签: javascript jquery html css

为了让我的网页优雅地降级,我有一些只有在相应的JavaScript能够运行时才能加载的CSS。

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

这也是CSS的一大块,所以我宁愿不必写一行JavaScript来添加每个属性。 (哦,如果有必要,我可以使用jQuery)。

5 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:5)

<head>中,您可以将其与document.write()一起包含在内。我从来没有尝试过这个,但它应该在理论上起作用。没有脚本执行意味着没有加载样式表。

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

答案 2 :(得分:2)

查看html5 boilerplate的身体状况,了解如何使用modernizr。

这里也是一个很好的例子:http://webdesignernotebook.com/css/how-to-use-modernizr/

然后为.no-js .addl-selector {}

编写css选择器

答案 3 :(得分:2)

您有几个选择。

我喜欢的是将以下代码添加到body标签。

<body id="no-js"><script>document.body.id="js"</script>

然后我可以从我的主CSS中定位#no-js#js

另一个选项是使用JavaScript加载一个额外的样式表,但这会减慢你的初始加载速度,我试图避免这种情况。

答案 4 :(得分:0)

我只是这样做:

document.documentElement.className = "js"

这会将类js添加到<html>标记,然后您可以使用以下命令通过css定位元素:

.js #someid{}