303 votes

Comment définir plusieurs propriétés de style css en Javascript

J'ai les variables javascript suivantes:

 var fontsize = "12px"
var left= "200px"
var top= "100px"
 

Je sais que je peux les définir à mon élément de manière itérative comme ceci:

 document.getElementById("myElement").style.top=top
document.getElementById("myElement").style.left=left
 

Est-il possible de les mettre tous ensemble en même temps, quelque chose comme ça?

 document.getElementById("myElement").style = allMyStyle 
 

460voto

Felix Kling Points 247451

Si vous avez le CSS valeurs en tant que chaîne et il n'y a pas d'autre CSS déjà défini pour l'élément (ou vous ne se soucient pas de les écraser), faire usage de l' cssText de la propriété:

document.getElementById("myElement").style.cssText = cssString;

Ce qui est bon dans un sens qu'il évite de repeindre l'élément chaque fois que vous modifiez une propriété (à vous de les changer tous les "à la fois" en quelque sorte).

De l'autre côté, vous devez construire la chaîne.

67voto

SHANK Points 1391

@Mircea: Il est très facile de définir plusieurs styles pour un élément dans une seule déclaration. Cela n'affecte pas les propriétés existantes et évite la complexité liée à la recherche de boucles ou de plugins.

 document.getElementById("demo").setAttribute(
   "style", "font-size: 100px; font-style: italic; color:#ff0000;");
 

ATTENTION: Si, par la suite, vous utilisez cette méthode pour ajouter ou modifier des propriétés de style, les propriétés précédentes définies à l'aide de 'setAttribute' seront effacées.

49voto

Gaby aka G. Petrioli Points 85891

Créez une fonction pour en prendre soin et transmettez-lui les paramètres avec les styles que vous souhaitez modifier.

 function setStyle( objId, propertyObject )
{
 var elem = document.getElementById(objId);
 for (var property in propertyObject)
    elem.style[property] = propertyObject[property];
}
 

et l'appelle comme ça

 setStyle('myElement', {'fontsize':'12px', 'left':'200px'});
 

Pour les valeurs des propriétés à l'intérieur de propertyObject, vous pouvez utiliser des variables.

17voto

Harmen Points 11632

Un framework Javascript vous permet de faire ces choses très facilement

jQuery

 $('#myElement').css({
  fontsize: '12px',
  left: '200px',
  top: '100px'
});
 

Objet et une boucle for-in

Ou bien, une méthode beaucoup plus élégante est un objet de base & for-loop

 var el = document.getElementById('#myElement'),
    css = {
      fontsize: '12px',
      left: '200px',
      top: '100px'
    };  

for(i in css){
   el.style[i] = css[i];
}
 

6voto

Sachin Shanbhag Points 20979

Vous pouvez avoir des classes individuelles dans vos fichiers css puis assigner le nom de la classe à votre élément

ou vous pouvez parcourir les propriétés des styles en tant que -

 var css = { "font-size": "12px", "left": "200px", "top": "100px" };

for(var prop in css) {
  document.getElementById("myId").style[prop] = css[prop];
}
 

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