Como definir vários atributos CSS no jQuery?

504

Existe alguma maneira sintática no jQuery para definir vários atributos CSS sem colocar tudo à direita da seguinte maneira:

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

Se você tem, digamos, 20 deles, seu código ficará difícil de ler, alguma solução?

Na API do jQuery, por exemplo, o jQuery entende e retorna o valor correto para ambos

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

e

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

Observe que, com a notação DOM, as aspas ao redor dos nomes das propriedades são opcionais , mas com a notação CSS, elas são necessárias devido ao hífen no nome.

Edward Tanguay
fonte

Respostas:

929

Melhor usar apenas .addClass()se você tiver 1 ou mais. Mais sustentável e legível.

Se você realmente deseja executar várias propriedades CSS, use o seguinte:

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

NB!
Quaisquer propriedades CSS com um hífen precisam ser citadas.
Coloquei as aspas para que ninguém precise esclarecer isso, e o código será 100% funcional.

quadrado vermelho
fonte
28
Na verdade, isso está incorreto - as propriedades precisam de aspas, além dos valores. Veja a resposta de Dave Mankoff.
Rb.usa #
16
@ rlb.usa, na verdade, não está incorreto, o acima funciona em jsfiddle.net/ERkXP . Obrigado pelo voto negativo!
redsquare
9
Por que diabos propor e até argumentar por uma sintaxe fora do padrão! Basta adicionar um estilo com '-' ou seja font-size, e ele falhará. Se se trata de provar limites, também são $('div').css({ width : 300, height: 40 }); válidos.
Independente
26
Se a propriedade CSS tiver um caractere de hífen (ou seja, excesso de texto), será necessário colocar aspas na propriedade. Isso é o que rlb.usa e Jonas estão falando, eu acho.
dan
4
@redsquare Considere adicionar o seguinte à sua resposta. Da API jQuery :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 20/09/2013
165

Passe como um objeto:

$(....).css({
    'property': 'value', 
    'property': 'value'
});

http://docs.jquery.com/CSS/css#properties

Dave Mankoff
fonte
9
Objeto Javascript, não JSON.
Chris
68
$('#message').css({ width: 550, height: 300, 'font-size': '8pt' });
Jimmy
fonte
3
para que isso funcione, é necessário alterar uma sintaxe: $ ('# message'). css ({width: '550px', height: '300px', 'tamanho da fonte': '8pt'});
Edward Tanguay
16
obrigado a todos os downvoters drive-by que nunca leram a documentação do jquery? valores numéricos são convertidos em valores de pixel automaticamente kthx.
Jimmy Jimmy
5
Sim, qual é o problema aqui? width: 550é perfeitamente válido.
Rfunduk 23/03/10
Eu acho que você também pode usar fontSizesem aspas ... minha pergunta é ... como você define heighte width, digamos ... para o mesmo valor .... seria .css({ { width, height} : 300 })?
22612 Alex Gray
5
@alexgray não há nenhuma direta maneira de fazer isso, mas você pode configurá-los cada um para a mesma variável:var x = 100; $el.css({width: x, height: x});
dave Mankoff
39

Usando um objeto simples, você pode emparelhar cadeias que representam nomes de propriedades com seus valores correspondentes. Alterar a cor do plano de fundo e tornar o texto mais ousado, por exemplo, ficaria assim:

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

Como alternativa, você também pode usar os nomes de propriedade JavaScript:

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

Mais informações podem ser encontradas na documentação do jQuery .

Sampson
fonte
18

por favor tente isso,

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

Você também pode usar attrjunto com style:

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

Concorde com o redsquare, no entanto, vale ressaltar que se você tiver uma propriedade de duas palavras como text-alignvocê, faria isso:

$("#message").css({ width: '30px', height: '10px', 'text-align': 'center'});
Darko Z
fonte
10
$("#message").css({"width" : "550px", "height" : "300px", "font-size" : "8pt"});

Além disso, pode ser melhor usar o jQuery incorporado addClasspara tornar seu projeto mais escalável.

Fonte: Como: jQuery Adicionar CSS e remover CSS

Studio3
fonte
8

Tente isto

$(element).css({
    "propertyName1":"propertyValue1",
    "propertyName2":"propertyValue2"
})
Janak Prajapati
fonte
7

Roteiro

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

Html

<div id="hello"></div>
Rizo
fonte
6

Você pode tentar isso

$("p:first").css("background-color", "#B2E0FF").css("border", "3px solid red");
Sumith Harshan
fonte
1
Esta não é uma boa abordagem, cara. O seu melhor para enviar o tipo de usuário json
Awais Qarni
6

Melhor maneira de usar variável

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

se você deseja alterar vários atributos css, é necessário usar a estrutura de objetos como abaixo:

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

mas fica pior quando queremos mudar muito de estilo , então o que eu sugiro é adicionar uma classe em vez de alterar o css usando o jQuery e adicionar uma classe também é mais legível.

veja o exemplo abaixo:

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');
});

Uma vantagem do último exemplo sobre o antigo é se você deseja adicionar algum css onclickde algo e deseja remover esse css no segundo clique e, no último exemplo, você pode usar.toggleClass('custom-class')

onde no exemplo anterior você deve definir todos os css com valores diferentes que você definiu anteriormente e será complicado, portanto, usar a opção de classe será uma solução melhor.

Haritsinh Gohil
fonte
0

Você pode usar

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

A melhor maneira é usar $ ('selector'). AddClass ('custom-class') e

.custom-class{
width:16px,
color: green;
margin: 0;
}
Akshay Rathnavas
fonte