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