Como você adiciona uma classe ao <html>
elemento raiz usando Javascript?
javascript
html
Brandon Lebedev
fonte
fonte
Respostas:
Como isso:
var root = document.getElementsByTagName( 'html' )[0]; // '0' to assign the first (and only `HTML` tag) root.setAttribute( 'class', 'myCssClass' );
Ou use isso como sua linha 'setter' para preservar quaisquer classes aplicadas anteriormente: (obrigado @ ama2)
root.className += ' myCssClass';
Ou, dependendo do suporte do navegador necessário, você pode usar o
classList.add()
método:root.classList.add('myCssClass');
https://developer.mozilla.org/en-US/docs/Web/API/Element/classList http://caniuse.com/#feat=classlist
ATUALIZAR:
Uma solução mais elegante para referenciar o
HTML
elemento pode ser esta:var root = document.documentElement; root.className += ' myCssClass'; // ... or: // root.classList.add('myCssClass'); //
fonte
classList.add
(caixa de camelo).classList
não funciona em document.documetElement.root.classList.add('myCssClass')
funcionou em todos os três.) Você está usando o IE?document.documentElement.classList.add
parece funcionar bem aqui. Os navegadores em 2018 começaram a oferecer suporte a isso?Isso também deve funcionar:
document.documentElement.className = 'myClass';
Compatibilidade .
Editar:
O IE 10 considera que é somente leitura; ainda:
Opera funciona:
Também posso confirmar que funciona em:
fonte
U+200B
após o apóstrofo final, fazendo com que ele falhe na compilação no webpack e em outros compiladores!Eu recomendo que você dê uma olhada no jQuery .
maneira jQuery:
$("html").addClass("myClass");
fonte
document.documentElement.classList.add('myCssClass');
classList
é compatível desde o ie10: https://caniuse.com/#search=classlistfonte
Você deve anexar a classe, não sobrescrevê-la
var headCSS = document.getElementsByTagName("html")[0].getAttribute("class") || ""; document.getElementsByTagName("html")[0].setAttribute("class",headCSS +"foo");
Eu ainda recomendaria usar jQuery para evitar incompatibilidades de navegador
fonte
Com Jquery ... Você pode adicionar classes a elementos html como este:
$(".divclass").find("p,h1,h2,h3,figure,span,a").addClass('nameclassorid');
nameclassorid nenhum ponto ou # no início
fonte