Je remarque que dans de nombreux moteurs de modèles, dans la chaudière HTML5 , dans divers cadres et dans des sites PHP simples, il y a la no-js
classe ajoutée sur la <HTML>
balise.
Pourquoi est-ce fait? Existe-t-il une sorte de comportement de navigateur par défaut qui réagit à cette classe? Pourquoi l'inclure toujours? Cela ne rend-il pas la classe elle-même obsolète, s'il n'y a pas de cas «no-js» et que le html peut être adressé directement?
Voici un exemple extrait de 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]-->
Comme vous pouvez le voir, l' <html>
élément aura toujours cette classe. Quelqu'un peut-il expliquer pourquoi cela se fait si souvent?
.myclass { /* CSS code for all versions of your page goes here */ }
,.js .myclass { /* This CSS code will only show up if JS is enabled */ }
et.no-js .myclass { /* This CSS code will only show up if JS is disabled. */ }
. J'espère que cela t'aides. -Nickclass
attribut. Bien que HTML 4 ne le soit pas techniquement, aucun navigateur ne s'y étouffe; même ceux qui ne le supportent pas l'ignorent, et je n'ai pas vu un de ces navigateurs depuis des années..js { padding: ...}
c'est très bien puisque vous savez comme celui qui l'a implémenté que body = .js. Plus directement à votre point, il semble que vous prétendez quebody.js
c'est pire que.js body
ce que je ne suis pas en<html>
et aucun problème n'a jamais été signalé à ce sujet. D'une manière ou d'une autre, le mettre<html>
est devenu une pratique établie et les gens savent immédiatement de quoi il s'agit et de ce qu'il fait. En fin de compte, s'écarter de cette pratique soulève simplement plus de questions.La
no-js
classe est utilisée par la bibliothèque de détection de fonctionnalités Modernizr . Lorsque Modernizr se charge, il remplaceno-js
parjs
. Si JavaScript est désactivé, la classe reste. Cela vous permet d'écrire du CSS qui cible facilement l'une ou l'autre condition.De la source anotée de Modernizrs (n'est plus maintenue) :
Voici un article de blog de Paul Irish décrivant cette approche: http://www.paulirish.com/2009/avoiding-the-fouc-v3/
J'aime faire la même chose, mais sans Modernizr. J'ai mis ce qui suit
<script>
dans le<head>
pour changer la classejs
si JavaScript est activé. Je préfère utiliser.replace("no-js","js")
la version regex car elle est un peu moins cryptique et convient à mes besoins.Avant cette technique, j'appliquais généralement des styles dépendants de js directement avec JavaScript. Par exemple:
Avec l'
no-js
astuce, cela peut maintenant être fait aveccss
:Ceci est préférable car:
la source
\b
) ne correspond pas à quelque chose commeanno-jsus
, l'autre la change enanjsus
.no-js
n'est pas une sous-chaîne typique d'un nom de classe, mais à cet égard, elle est "plus sûre" avec\b
s.Modernizr.js supprimera la
no-js
classe.Cela vous permet de créer des règles CSS pour
.no-js something
les appliquer uniquement si Javascript est désactivé.la source
La
no-js
classe est supprimée par un script javascript, vous pouvez donc modifier / afficher / masquer les choses en utilisant css si js est désactivé.la source
.no-js #js-warning {display: block;}
Ce n'est pas seulement applicable dans Modernizer. Je vois un site implémenter comme ci-dessous pour vérifier s'il a un support javascript ou non.
Si le support javascript est là, il supprimera la
no-js
classe. Sinon,no-js
il restera dans la balise body. Ensuite, ils contrôlent les styles dans le CSS lorsque aucun support javascript n'est utilisé.la source
Regardez le code source dans Modernizer, cette section:
Donc, fondamentalement, il recherche classPrefix +
no-js
class et le remplace par classPrefix +js
.Et l'utilisation de cela, est de style différent si JavaScript ne fonctionne pas dans le navigateur.
la source
La classe no-js est utilisée pour styliser une page Web, selon que l'utilisateur a désactivé ou activé JS dans le navigateur.
Selon les documents Modernizr :
la source