109 votes

Ajouter une classe à <html> avec Javascript ?

Comment ajouter une classe au <html> Élément racine à l'aide de Javascript ?

142voto

Kevin Boucher Points 7156

Comme ça :

var root = document.getElementsByTagName( 'html' )[0]; // '0' to assign the first (and only `HTML` tag)

root.setAttribute( 'class', 'myCssClass' );

Ou bien utilisez cette ligne comme 'setter' pour préserver toutes les classes précédemment appliquées : (merci @ama2)

root.className += ' myCssClass';

Ou, en fonction de la prise en charge requise par le navigateur, vous pouvez utiliser la fonction classList.add() méthode :

root.classList.add('myCssClass');

https://developer.mozilla.org/en-US/docs/Web/API/Element/classList http://caniuse.com/#feat=classlist

UPDATE :

Une solution plus élégante pour référencer le HTML élément pourrait être celui-ci :

var root = document.documentElement;
root.className += ' myCssClass';
// ... or:
//  root.classList.add('myCssClass');
//

18voto

c24w Points 1254

Cela devrait également fonctionner :

document.documentElement.className = 'myClass';

Compatibilité .

Editar:

IE 10 considère que c'est en lecture seule ; pourtant :

It worked!?

L'opéra fonctionne :

Works

Je peux également confirmer qu'il fonctionne dans :

  • Chrome 26
  • Firefox 19.02
  • Safari 5.1.7

15voto

Tom Esterez Points 4923
document.documentElement.classList.add('myCssClass');

classList est supporté depuis ie10 : https://caniuse.com/#search=classlist

10voto

aebersold Points 1967

Je vous recommande de jeter un coup d'oeil à jQuery .

façon jQuery :

$("html").addClass("myClass");

7voto

ama2 Points 1274

Vous devez ajouter la classe et non l'écraser

var headCSS = document.getElementsByTagName("html")[0].getAttribute("class") || "";
document.getElementsByTagName("html")[0].setAttribute("class",headCSS +"foo");

Je recommande toujours l'utilisation de jQuery pour éviter les incompatibilités entre navigateurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X