Como mudar CSS usando jQuery?

133

Estou tentando alterar o CSS usando jQuery:

$(init);
    
function init() {
    $("h1").css("backgroundColor", "yellow");
    $("#myParagraph").css({"backgroundColor":"black","color":"white");
    $(".bordered").css("border", "1px solid black");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="bordered">
    <h1>Header</h1>
    <p id="myParagraph">This is some paragraph text</p>
</div>

O que estou perdendo aqui?

user449914
fonte
2
foi consertado. Conforme respondido abaixo, existem duas soluções: (1) remova a chave e altere backgroundColor para background-color (classe css) ou - o problema principal) coloque a frase em falta no final e use a notação DOM / JS também trabalho. OBRIGADO A TODOS!
user449914
1
manipular CSS em javascript pode ser considerado uma má prática. Considere adicionar / remover / alternar classes.
Austin

Respostas:

210

Ignore as pessoas que estão sugerindo que o nome da propriedade seja o problema. A documentação da API do jQuery afirma explicitamente que qualquer notação é aceitável: http://api.jquery.com/css/

O problema real é que você está perdendo uma chave de fechamento nesta linha:

$("#myParagraph").css({"backgroundColor":"black","color":"white");

Altere para este:

$("#myParagraph").css({"backgroundColor": "black", "color": "white"});

Aqui está uma demonstração de trabalho: http://jsfiddle.net/YPYz8/

$(init);
    
function init() {
    $("h1").css("backgroundColor", "yellow");
    $("#myParagraph").css({ "backgroundColor": "black", "color": "white" });
    $(".bordered").css("border", "1px solid black");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="bordered">
    <h1>Header</h1>
    <p id="myParagraph">This is some paragraph text</p>
</div>

Ender
fonte
Como você adiciona um valor como variável, por exemplo, paddingTopcomo número x de px? Todo tipo de sintaxe que tentei resultou em um erro.
Mentalista
Deixa pra lá. Entendi: #$("#main").css({paddingTop: (var_name+20) + "px"});
Mentalist
52

Você pode:

$("h1").css("background-color", "yellow");

Ou:

$("h1").css({backgroundColor: "yellow"});
Sarfraz
fonte
3
{"backgroundColor": "yellow"}é válido, embora supérfluo.
Tgr 16/09
@ user449914: você não precisa colocar aspas nos nomes das propriedades em um literal de objeto - {foo: "bar"}é o mesmo que {"foo": "bar"}.
Tgr 16/09
24

Para esclarecer um pouco as coisas, já que algumas das respostas estão fornecendo informações incorretas:


O método jQuery .css () permite o uso da notação DOM ou CSS em muitos casos. Então, ambos backgroundColore background-colorfarão o trabalho.

Além disso, quando você chama .css()com argumentos, você tem duas opções sobre quais podem ser os argumentos. Eles podem ser duas cadeias separadas por vírgula, representando uma propriedade css e seu valor, ou um objeto Javascript que contém um ou mais pares de valores-chave de propriedades e valores CSS.

Em conclusão, a única coisa errada com o seu código está faltando }. A linha deve ler:

$("#myParagraph").css({"backgroundColor":"black","color":"white"});

Você não pode deixar os colchetes de fora, mas pode deixar as aspas por aí backgroundColore color. Se você usar, background-colordeverá colocar aspas ao redor por causa do hífen.

Em geral, é um bom hábito citar seus objetos Javascript, pois podem surgir problemas se você não citar uma palavra-chave existente .


Uma observação final é sobre o método jQuery .ready ()

$(handler);

é sinônimo de :

$(document).ready(handler);

bem como com um terceiro formulário não recomendado.

Isso significa que $(init)está completamente correto, já que inité o manipulador nessa instância. Então, initserá acionado quando o DOM for construído.

Peter Ajtai
fonte
10

Quando você estiver usando a propriedade Multiple css com o jQuery, deverá usar o Brace curly no início e no final. Está faltando a chave de finalização.

function init() {
 $("h1").css("backgroundColor", "yellow");

 $("#myParagraph").css({"background-color":"black","color":"white"});

 $(".bordered").css("border", "1px solid black");
}

Você pode dar uma olhada neste tutorial do jQuery CSS Selector .

Sadi
fonte
5

O .css()método torna super simples encontrar e definir propriedades CSS e, combinado com outros métodos como .animate (), você pode criar alguns efeitos interessantes em seu site.

Na sua forma mais simples, o .css()método pode definir uma única propriedade CSS para um conjunto específico de elementos correspondentes. Você apenas passa a propriedade e o valor como strings e as propriedades CSS do elemento são alteradas.

$('.example').css('background-color', 'red');

Isso definiria a propriedade 'background-color' como 'red' para qualquer elemento que tivesse a classe 'example'.

Mas você não está limitado a mudar apenas uma propriedade de cada vez. Claro, você pode adicionar um monte de objetos jQuery idênticos, cada um alterando apenas uma propriedade de cada vez, mas isso faz várias chamadas desnecessárias ao DOM e é muito código repetido.

Em vez disso, você pode transmitir ao .css()método um objeto Javascript que contém as propriedades e os valores como pares chave / valor. Dessa forma, cada propriedade será configurada no objeto jQuery de uma só vez.

$('.example').css({
    'background-color': 'red',
    'border' : '1px solid red',
    'color' : 'white',
    'font-size': '32px',
    'text-align' : 'center',
    'display' : 'inline-block'
});

Isso mudará todas essas propriedades CSS nos elementos '.example'.

Johnny
fonte
3

Só queria acrescentar que, ao usar números para valores com o método css, você deve adicioná-los fora do apóstrofo e, em seguida, adicionar a unidade CSS nos apóstrofos.

$('.block').css('width',50 + '%');

ou

var $block = $('.block')    

$block.css({ 'width': 50 + '%', 'height': 4 + 'em', 'background': '#FFDAB9' });
lowtechsun
fonte
1
<!DOCTYPE html>
<html>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script>
      $( document ).ready(function() {
         $('h1').css('color','#3498db');
      });
    </script>
    <style>
      .wrapper{
        height:450px;
        background:#ededed;
        text-align:center
      }
    </style>
  </head>
  <body>
    <div class="wrapper">
      <h1>Title</h1>
    </div>
  </body>
</html>
Nikit Barochiya
fonte
1

$ (". radioValue"). css ({"background-color": "- webkit-linear-gradient (# e9e9e9, rgba (255, 255, 255, 0,43137254901960786), # e9e9e9)", "color": "# 454545 "," padding ":" 8px "});

Daooji katara
fonte
2
Uma pequena explicação também deve ajudar.
timiTao
1

$(function(){ 
$('.bordered').css({
"border":"1px solid #EFEFEF",
"margin":"0 auto",
"width":"80%"
});

$('h1').css({
"margin-left":"10px"
});

$('#myParagraph').css({
"margin-left":"10px",
"font-family":"sans-serif"
});

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="bordered">
<h1>Header</h1>
<p id="myParagraph">This is some paragraph text</p>
</div>


fonte
Embora esse código possa responder à pergunta, fornecer informações sobre como e por que resolve o problema melhora seu valor a longo prazo.
L_j
0

Código errado:$("#myParagraph").css({"backgroundColor":"black","color":"white");

está faltando "}"depoiswhite"

mude para isso

 $("#myParagraph").css({"background-color":"black","color":"white"});
galexy
fonte
8
Você acabou de repetir a resposta mais popular, apenas 3 anos e meio depois.
Curtis Patrick