1. ホーム
  2. javascript

[解決済み] HTMLの "no-js "クラスは何のためにあるのですか?

2022-03-18 22:40:37

質問

多くのテンプレートエンジンにおいて HTML5 ボイラープレート のような、様々なフレームワークやプレーンな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> 要素は常にこのクラスを持つことになります。 なぜこのようなことが頻繁に行われるのか、誰か説明してください。

解決方法は?

Modernizr を実行すると、"no-js" クラスが削除され、代わりに "js" が追加されます。これは、Javascriptのサポートが有効かどうかに応じて、異なるCSSルールを適用するための方法です。

参照 モダナイザーのソースコード .