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

  • 回答 (2)
  • 关注 (0)
  • 查看 (386)

我注意到,在许多模板引擎中,在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>元素将永远拥有这个类。有人可以解释为什么经常这样做吗?

MOISTGMOISTG提问于
人生的旅途辣鸡前端回答于

该no-js是由使用的Modernizr功能检测库。当Modernizr的负载,它取代no-js有js。如果JavaScript被禁用,则该类仍然存在。这使您可以轻松地编写任何条件的CSS。

来自Modernizrs'Anotated Source :

从元素中删除“no-js”类,如果存在: docElement.className=docElement.className.replace(/\bno-js\b/,'') + ' js';

Dust资深服务器虚拟化工程师。回答于

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

扫码关注云+社区

领取腾讯云代金券