Comment définir plusieurs attributs CSS dans jQuery?


504

Existe-t-il un moyen syntaxique dans jQuery pour définir plusieurs attributs CSS sans enchaîner tout à droite comme ceci:

$("#message").css("width", "550px").css("height", "300px").css("font-size", "8pt");

Si vous en avez, disons, 20, votre code deviendra difficile à lire, des solutions?

À partir de l'API jQuery, par exemple, jQuery comprend et renvoie la valeur correcte pour les deux

.css({ "background-color": "#ffe", "border-left": "5px solid #ccc" }) 

et

.css({backgroundColor: "#ffe", borderLeft: "5px solid #ccc" }).

Notez qu'avec la notation DOM, les guillemets autour des noms de propriété sont facultatifs , mais avec la notation CSS, ils sont requis en raison du trait d'union dans le nom.

Réponses:


929

Mieux vaut simplement utiliser .addClass()même si vous en avez 1 ou plus. Plus maintenable et lisible.

Si vous avez vraiment envie de faire plusieurs propriétés CSS, utilisez ce qui suit:

.css({
   'font-size' : '10px',
   'width' : '30px',
   'height' : '10px'
});

NB!
Toutes les propriétés CSS avec un tiret doivent être citées.
J'ai placé les guillemets donc personne n'aura besoin de clarifier cela, et le code sera 100% fonctionnel.


28
C'est en fait incorrect - les propriétés ont besoin de guillemets autour d'eux ainsi que les valeurs. Voir la réponse de Dave Mankoff.
rlb.usa

16
@ rlb.usa en fait ce n'est pas incorrect, ce qui précède fonctionne jsfiddle.net/ERkXP . Merci pour le downvote!
redsquare

9
Pourquoi diable proposer et même plaider pour une telle syntaxe non standard! Ajoutez simplement un style avec '-' c'est font-size-à- dire , et il échouera. S'il s'agit de prouver les limites, elles sont $('div').css({ width : 300, height: 40 }); également valables.
Indépendant

26
Si la propriété CSS a un caractère tiret (c'est-à-dire un débordement de texte), vous devez mettre des guillemets autour de la propriété. C'est ce dont parlent rlb.usa et Jonas je pense.
dan

4
@redsquare Veuillez envisager d'ajouter ce qui suit à votre réponse. De jQuery API :For example, jQuery understands and returns the correct value for both .css({ "background-color": "#ffe", "border-left": "5px solid #ccc" }) and .css({backgroundColor: "#ffe", borderLeft: "5px solid #ccc" }). Notice that with the DOM notation, quotation marks around the property names are optional, but with CSS notation they're required due to the hyphen in the name.
zanetu


68
$('#message').css({ width: 550, height: 300, 'font-size': '8pt' });

3
pour que cela fonctionne, vous devez changer une syntaxe: $ ('# message'). css ({width: '550px', height: '300px', 'font-size': '8pt'});
Edward Tanguay

16
euh, merci à tous les downvoters qui n'ont jamais lu la documentation jquery? les valeurs numériques sont converties en valeurs de pixels automatiquement kthx.
Jimmy

5
Oui, quel est le problème ici? width: 550est parfaitement valable.
rfunduk

je pense que vous pouvez également utiliser fontSizesans guillemets ... ma question est cependant .... comment définissez-vous height, et width, disons ... à la même valeur .... serait-ce .css({ { width, height} : 300 })?
Alex Gray

5
@alexgray il n'y a aucun moyen direct de le faire, mais vous pouvez les définir chacun sur la même variable:var x = 100; $el.css({width: x, height: x});
dave mankoff

39

À l'aide d'un objet simple, vous pouvez associer des chaînes qui représentent des noms de propriété avec leurs valeurs correspondantes. Changer la couleur d'arrière-plan et rendre le texte plus audacieux, par exemple, ressemblerait à ceci:

$("#message").css({
    "background-color": "#0F0", 
    "font-weight"     : "bolder"
});

Alternativement, vous pouvez également utiliser les noms de propriété JavaScript:

$("#message").css({
    backgroundColor: "rgb(128, 115, 94)",
    fontWeight     : "700"
});

Plus d'informations peuvent être trouvées dans la documentation de jQuery .


18

veuillez essayer ceci,

$(document).ready(function(){
    $('#message').css({"color":"red","font-family":"verdana"});
})

16

Vous pouvez également utiliser attravec style:

$('#message').attr("style", "width:550; height:300; font-size:8px" );

10

D'accord avec redsquare mais il convient de mentionner que si vous avez une propriété de deux mots comme text-alignvous le feriez:

$("#message").css({ width: '30px', height: '10px', 'text-align': 'center'});


8

Essaye ça

$(element).css({
    "propertyName1":"propertyValue1",
    "propertyName2":"propertyValue2"
})

7

Scénario

 $(IDname).css({
    "background":"#000",
    "color":"#000"
})

Html

<div id="hello"></div>

6

Vous pouvez essayer ceci

$("p:first").css("background-color", "#B2E0FF").css("border", "3px solid red");

1
Ce n'est pas un bon type d'approche. Il vaut mieux envoyer le type json de l'utilisateur
Awais Qarni

6

Meilleure façon d'utiliser la variable

var style1 = {
   'font-size' : '10px',
   'width' : '30px',
   'height' : '10px'
};
$("#message").css(style1);

2

si vous souhaitez modifier plusieurs attributs css, vous devez utiliser la structure d' objet comme ci-dessous:

$(document).ready(function(){
   $('#message').css({
                   "background-color": "#0F0",
                   "color":"red",
                   "font-family":"verdana"
                });
});

mais cela empire lorsque nous voulons changer beaucoup de style , donc ce que je vous suggère est d'ajouter une classe au lieu de changer css en utilisant jQuery, et ajouter une classe est aussi plus lisible.

voir l'exemple ci-dessous:

CSS

<style>
    .custom-class{
       font-weight: bold;
       background: #f5f5f5;
       text-align: center;
       font-size: 18px;
       color:red;
    }
</style>

jQuery

$(document).ready(function(){
   $('#message').addclass('custom-class');
});

Un avantage de ce dernier exemple par rapport à l'ancien est que si vous voulez ajouter du CSS onclickde quelque chose et que vous voulez supprimer ce CSS au deuxième clic, dans ce dernier exemple, vous pouvez utiliser.toggleClass('custom-class')

où dans l'exemple précédent, vous devez définir tous les CSS avec des valeurs différentes que vous avez définies auparavant et ce sera compliqué, donc l'utilisation de l'option de classe sera une meilleure solution.


0

Vous pouvez utiliser

$('selector').css({'width:'16px', 'color': 'green', 'margin': '0'});

La meilleure façon est d'utiliser $ ('selector'). AddClass ('custom-class') et

.custom-class{
width:16px,
color: green;
margin: 0;
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.