Bagaimana cara mendefinisikan beberapa atribut CSS di jQuery?


504

Apakah ada cara sintaksis di jQuery untuk mendefinisikan beberapa atribut CSS tanpa merangkai semuanya ke kanan seperti ini:

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

Jika Anda memiliki, katakanlah, 20 kode ini menjadi sulit dibaca, ada solusi?

Dari jQuery API, misalnya, jQuery memahami dan mengembalikan nilai yang benar untuk keduanya

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

dan

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

Perhatikan bahwa dengan notasi DOM, tanda kutip di sekitar nama properti adalah opsional , tetapi dengan notasi CSS mereka diperlukan karena tanda hubung dalam nama.

Jawaban:


929

Lebih baik gunakan saja .addClass()walaupun Anda punya 1 atau lebih. Lebih mudah dikelola dan dibaca.

Jika Anda benar-benar memiliki keinginan untuk melakukan beberapa properti CSS maka gunakan yang berikut ini:

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

NB!
Setiap properti CSS dengan tanda hubung perlu dikutip.
Saya telah menempatkan tanda kutip sehingga tidak ada yang perlu mengklarifikasi itu, dan kodenya akan berfungsi 100%.


28
Ini sebenarnya salah - properti membutuhkan tanda kutip di sekitarnya serta nilainya. Lihat jawaban Dave Mankoff.
rlb.usa

16
@ rlb.usa sebenarnya tidak salah, di atas berfungsi jsfiddle.net/ERkXP . Terima kasih atas undiannya!
redsquare

9
Mengapa di bumi mengusulkan dan bahkan berdebat untuk sintaksis non-standar seperti itu! Cukup tambahkan gaya dengan '-' yaitu font-size, dan gagal. Jika ini tentang membuktikan batas, maka $('div').css({ width : 300, height: 40 }); valid juga.
Independen

26
Jika properti CSS memiliki karakter tanda hubung (mis. Text-overflow) maka Anda perlu memberikan tanda kutip di sekitar properti. Itulah yang saya pikir rlb.usa dan Jonas.
dan

4
@redsquare Silakan pertimbangkan untuk menambahkan yang berikut ke jawaban Anda. Dari 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
untuk membuatnya bekerja, Anda harus mengubah beberapa sintaksisnya: $ ('# message'). css ({width: '550px', tinggi: '300px', 'font-size': '8pt'});
Edward Tanguay

16
eh, terima kasih untuk semua drive-by downvoter yang tidak pernah membaca dokumentasi jquery? nilai numerik dikonversi menjadi nilai piksel secara otomatis kthx.
Jimmy

5
Ya apa masalahnya di sini? width: 550sangat valid.
rfunduk

saya pikir Anda juga bisa menggunakan fontSizetanpa tanda kutip ... pertanyaan saya adalah .... bagaimana Anda mengatur height, dan width, katakanlah ... dengan nilai SAMA .... apakah itu .css({ { width, height} : 300 })?
Alex Grey

5
@alexgray tidak ada cara langsung untuk melakukan ini, tetapi Anda dapat mengatur masing-masing ke variabel yang sama:var x = 100; $el.css({width: x, height: x});
dave mankoff

39

Menggunakan objek biasa, Anda bisa memasangkan string yang mewakili nama properti dengan nilai terkait. Mengubah warna latar belakang, dan membuat teks lebih tebal, misalnya akan terlihat seperti ini:

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

Atau, Anda juga dapat menggunakan nama properti JavaScript:

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

Informasi lebih lanjut dapat ditemukan di dokumentasi jQuery .


18

tolong coba ini,

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

16

Anda juga dapat menggunakan attrbersama dengan style:

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

10

Setuju dengan redsquare namun perlu disebutkan bahwa jika Anda memiliki properti dua kata seperti text-align Anda akan melakukan ini:

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


8

Coba ini

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

7

Naskah

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

Html

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

6

Anda Bisa Coba Ini

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

1
Ini bukan pendekatan yang baik Bung. Lebih baik mengirim tipe json pengguna
Awais Qarni

6

Cara terbaik untuk menggunakan variabel

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

2

jika Anda ingin mengubah beberapa atribut css maka Anda harus menggunakan struktur objek seperti di bawah ini:

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

tetapi menjadi lebih buruk ketika kami ingin mengubah banyak gaya , jadi apa yang saya sarankan kepada Anda adalah menambahkan kelas alih-alih mengubah css menggunakan jQuery, dan menambahkan kelas lebih mudah dibaca juga.

lihat contoh di bawah ini:

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

Salah satu keuntungan dari contoh terakhir daripada yang pertama adalah jika Anda ingin menambahkan beberapa css onclickdari sesuatu dan ingin menghapus css pada klik kedua maka pada contoh terakhir Anda dapat menggunakan.toggleClass('custom-class')

di mana dalam contoh sebelumnya Anda harus mengatur semua css dengan nilai yang berbeda yang telah Anda tetapkan sebelumnya dan itu akan rumit, jadi menggunakan opsi kelas akan menjadi solusi yang lebih baik.


0

Kamu bisa menggunakan

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

Cara terbaik adalah menggunakan $ ('selector'). AddClass ('custom-class') dan

.custom-class{
width:16px,
color: green;
margin: 0;
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.