HTML“ no-js”类的目的是什么?

我注意到,在许多模板引擎中,在HTML5 Boilerplate中,在各种框架中以及在简单的php网站中,都将no-js类添加到了<HTML>标记中。

为什么要这样做?是否有某种默认的浏览器行为会对此类作出反应?为什么总是包含它?如果没有no-“ no-js”情况并且可以直接处理html,那是否不会使类本身过时?

这是HTML5 Boilerplate index.html中的示例:

<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->
<!--[if IE 7 ]>    <html lang="en" class="no-js ie7"> <![endif]-->
<!--[if IE 8 ]>    <html lang="en" class="no-js ie8"> <![endif]-->
<!--[if IE 9 ]>    <html lang="en" class="no-js ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]-->

如您所见,<html>元素将始终具有此类。有人可以解释为什么这样做如此频繁吗?

米亚小哥斯丁2020/03/12 17:23:35

no-js类用于设置网页样式,具体取决于用户是否在浏览器中启用或禁用了JS。

根据Modernizr docs

无js

默认情况下,Modernizr将重写<html class="no-js"> to <html class="js">这样可以隐藏某些仅应在执行JavaScript的环境中公开的元素。如果要禁用此更改,可以在配置中将enableJSClass设置为false。

逆天古一2020/03/12 17:23:35

Modernizr.js将删除no-js该类。

这样,您可以制定CSS规则,.no-js something以仅在禁用Javascript时才应用它们。

Gil米亚卡卡西2020/03/12 17:23:35

no-js班获得由JavaScript的脚本文件删除,这样你就可以修改/显示/隐藏的东西使用CSS,如果JS被禁用。

2020/03/12 17:23:35

当Modernizr运行时,它将删除“ no-js”类,并将其替换为“ js”。这是一种根据是否启用Javascript支持来应用不同CSS规则的方法。

请参阅Modernizer的源代码