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.

Edward Tanguay
sumber

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%.

kotak merah
sumber
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
165

Lulus sebagai Obyek:

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

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

dave mankoff
sumber
9
Objek Javascript, bukan JSON.
Chris
68
$('#message').css({ width: 550, height: 300, 'font-size': '8pt' });
Jimmy
sumber
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 .

Sampson
sumber
18

tolong coba ini,

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

Anda juga dapat menggunakan attrbersama dengan style:

$('#message').attr("style", "width:550; height:300; font-size:8px" );
Somnath Kharat
sumber
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'});
Darko Z
sumber
10
$("#message").css({"width" : "550px", "height" : "300px", "font-size" : "8pt"});

Juga, mungkin lebih baik menggunakan jQuery's built in addClass untuk membuat proyek Anda lebih terukur.

Sumber: Cara: jQuery Tambahkan CSS dan Hapus CSS

Studio3
sumber
8

Coba ini

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

Naskah

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

Html

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

Anda Bisa Coba Ini

$("p:first").css("background-color", "#B2E0FF").css("border", "3px solid red");
Sumith Harshan
sumber
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);
Justin
sumber
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.

Haritsinh Gohil
sumber
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;
}
Akshay Rathnavas
sumber