Ich stelle fest, dass in vielen Template-Engines, im HTML5-Boilerplate , in verschiedenen Frameworks und auf einfachen PHP-Sites die no-js
Klasse dem <HTML>
Tag hinzugefügt wird .
Warum wird das gemacht? Gibt es eine Art Standard-Browserverhalten, das auf diese Klasse reagiert? Warum immer einschließen? Macht das die Klasse selbst nicht obsolet, wenn es keinen no-"no-js" -Fall gibt und HTML direkt angesprochen werden kann?
Hier ist ein Beispiel aus der 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]-->
Wie Sie sehen können, hat das <html>
Element immer diese Klasse. Kann jemand erklären, warum dies so oft gemacht wird?
.myclass { /* CSS code for all versions of your page goes here */ }
,.js .myclass { /* This CSS code will only show up if JS is enabled */ }
und.no-js .myclass { /* This CSS code will only show up if JS is disabled. */ }
. Hoffe das hilft. -Nickclass
Attribut haben kann. Obwohl HTML 4 dies technisch nicht tut, erstickt kein Browser daran. Selbst diejenigen, die es nicht unterstützen, ignorieren es einfach und ich habe seit Jahren keinen dieser Browser mehr gesehen..js { padding: ...}
Ordnung zu sein, da Sie als derjenige, der es implementiert hat, wissen, dass body = .js.body.js
.js body
<html>
und es wurde noch nie ein Problem dagegen gemeldet. Irgendwie hat sich das Anziehen<html>
zu einer etablierten Praxis entwickelt und die Leute wissen sofort, was es ist und was es tut. Am Ende wirft eine Abweichung von dieser Praxis nur weitere Fragen auf.Die
no-js
Klasse wird von der Modernizr- Feature-Erkennungsbibliothek verwendet. Wenn Modernizr Lasten, ersetzt sieno-js
mitjs
. Wenn JavaScript deaktiviert ist, bleibt die Klasse erhalten. Auf diese Weise können Sie CSS schreiben, das problemlos auf beide Bedingungen abzielt.Aus der kommentierten Quelle von Modernizrs (nicht mehr gepflegt) :
Hier ist ein Blog-Beitrag von Paul Irish, der diesen Ansatz beschreibt: http://www.paulirish.com/2009/avoiding-the-fouc-v3/
Ich mache gerne das Gleiche, aber ohne Modernizr. Ich habe Folgendes
<script>
in das Feld eingefügt<head>
, um die Klasse zu ändern,js
wenn JavaScript aktiviert ist. Ich bevorzuge die Verwendung.replace("no-js","js")
gegenüber der Regex-Version, da diese etwas weniger kryptisch ist und meinen Anforderungen entspricht.Vor dieser Technik habe ich im Allgemeinen nur js-abhängige Stile direkt mit JavaScript angewendet. Zum Beispiel:
Mit dem
no-js
Trick kann dies nun geschehen mitcss
:Dies ist vorzuziehen, weil:
quelle
\b
) stimmt nicht mit so etwas übereinanno-jsus
, die andere ändert sie inanjsus
.no-js
ist kein typischer Teilstring eines Klassennamens, aber in dieser Hinsicht ist es mit\b
s "sicherer" .Modernizr.js entfernt die
no-js
Klasse.Auf diese Weise können Sie CSS-Regeln festlegen
.no-js something
, um sie nur anzuwenden, wenn Javascript deaktiviert ist.quelle
Die
no-js
Klasse wird durch ein Javascript-Skript entfernt, sodass Sie Dinge mit CSS ändern / anzeigen / ausblenden können, wenn js deaktiviert ist.quelle
.no-js #js-warning {display: block;}
Dies gilt nicht nur für Modernizer. Ich sehe einige Site-Implementierungen wie unten, um zu überprüfen, ob sie Javascript unterstützen oder nicht.
Wenn Javascript-Unterstützung vorhanden ist, wird die
no-js
Klasse entfernt. Andernfallsno-js
bleibt im Body-Tag. Dann steuern sie die Stile im CSS, wenn kein Javascript unterstützt wird.quelle
Schauen Sie sich den Quellcode in Modernizer an, diesen Abschnitt:
Im Grunde sucht es also nach classPrefix +
no-js
class und ersetzt es durch classPrefix +js
.Und die Verwendung davon ist anders zu gestalten, wenn JavaScript nicht im Browser ausgeführt wird.
quelle
Die no-js-Klasse wird zum Gestalten einer Webseite verwendet, abhängig davon, ob der Benutzer JS im Browser deaktiviert oder aktiviert hat.
Gemäß den Modernizr-Dokumenten :
quelle