236 votes

Définir une propriété CSS en JavaScript ?

J'ai créé ce qui suit...

var menu = document.createElement('select');

Comment puis-je maintenant définir des attributs CSS, par exemple width: 100px ?

330voto

kjy112 Points 9481

Utilisez element.style :

var element = document.createElement('select');
element.style.width = "100px";

23 votes

Qu'en est-il de ceux qui ne sont pas officiels comme -webkit-background-size ? Existe-t-il un moyen de les définir avec un simple js ou devons-nous utiliser jQuery ?

76 votes

@Luke obj.style["-webkit-background-size"] = "400px"

0 votes

Cela permet de styliser l'élément dans l'élément et non dans la feuille de style.

71voto

GenericTypeTea Points 27689

Il suffit de définir le style :

var menu = document.createElement("select");
menu.style.width = "100px";

Ou si vous voulez, vous pouvez utiliser jQuery :

$(menu).css("width", "100px");

5 votes

@Sime - Mes citations ne sont pas incohérentes. J'utilise toujours des guillemets doubles pour JS car c'est la norme au travail. De toute façon, la première ligne avait des guillemets simples car je l'ai copiée de la question de l'OP. C'est corrigé maintenant de toute façon.

1 votes

Ils sont corrects maintenant, mais ils étaient incohérents au moment de mon commentaire. :)

2 votes

@Sime - J'en ai pris note : "De toute façon, la première ligne avait des guillemets simples car je l'ai copiée de la question du PO. Corrigé maintenant de toute façon."

49voto

Daniel X Moore Points 6026

Pour la plupart des styles, faites ceci :

var obj = document.createElement('select');
obj.style.width= "100px";

Pour les styles dont le nom comporte des traits d'union, procédez comme suit :

var obj = document.createElement('select');
obj.style["-webkit-background-size"] = "100px"

20voto

Justin Niessner Points 144953

C'est en fait assez simple avec vanilla JavaScript :

menu.style.width = "100px";

18voto

Nick Points 1300

Toutes les réponses vous indiquent correctement comment faire ce que vous avez demandé, mais je vous conseille d'utiliser JavaScript pour définir une classe sur l'élément et de le styliser en utilisant CSS. De cette façon, vous gardez la séparation correcte entre le comportement et le style.

Imaginez que vous fassiez appel à un designer pour remodeler le site... il devrait pouvoir travailler uniquement en CSS sans avoir à utiliser votre JavaScript.

En prototype, je le ferais :

$(newElement).addClassName('blah')

1 votes

+1 pour moi - beaucoup plus facile / propre de garder tous vos CSS séparés.

1 votes

Version jQuery de ceci pour référence... $(selector).addClass('blah')

0 votes

Version vanille : newElement.classList.add('blah')

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