Як визначити кілька атрибутів CSS у jQuery?


504

Чи є синтаксичний спосіб у jQuery визначити декілька атрибутів CSS, не встановлюючи рядки все праворуч, як це:

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

Якщо у вас, скажімо, 20 цих кодів буде важко читати, будь-які рішення?

Наприклад, з jQuery API, jQuery розуміє та повертає правильне значення для обох

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

і

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

Зауважте, що в нотації DOM лапки навколо імен властивостей необов’язкові , але при позначенні CSS вони потрібні через дефіс в імені.

Відповіді:


928

Краще просто використовувати, .addClass()навіть якщо у вас є 1 і більше. Більш ремонтабельний і читабельний.

Якщо у вас дійсно є потреба зробити декілька властивостей CSS, тоді використовуйте наступне:

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

NB!
Будь-які властивості CSS із дефісом потрібно цитувати.
Я розмістив лапки, тому нікому не потрібно буде уточнювати це, і код буде на 100% функціональним.


28
Це насправді неправильно - властивості потребують цитат навколо них, а також значень. Дивіться відповідь Дейва Манкова.
rlb.usa

16
@ rlb.usa насправді це невірно, вище працює jsfiddle.net/ERkXP . Дякуємо за голосування!
переосмислити

9
Чому на землі пропонують і навіть сперечаються за такий нестандартний синтаксис! Просто додайте стиль з "-", тобто font-size, і це не вдасться. Якщо мова йде про межі доказування, то вони $('div').css({ width : 300, height: 40 }); також дійсні.
Незалежна

26
Якщо властивість CSS має характер тире (тобто переповнення тексту), то вам потрібно поставити лапки навколо властивості. Про це говорять rlb.usa та Йонас, я думаю.
дан

4
@redsquare Подумайте про те, щоб додати відповідь у відповідь. Від 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


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

3
щоб змусити його працювати, потрібно змінити на ньому синтаксис: $ ('# message'). css ({width: '550px', height: '300px', 'font-size': '8pt'});
Едвард Тангуай

16
Ем, спасибі всім спонсорам, які ніколи не читали документацію jquery? числові значення автоматично перетворюються в піксельні значення, kthx.
Джиммі

5
Так, у чому тут проблема? width: 550цілком справедливий.
rfunduk

я думаю, ви також можете використовувати fontSizeбез лапок ... моє питання, хоча .... як ви встановите height, і width, скажімо, ... для того самого значення .... це було б .css({ { width, height} : 300 })?
Алекс Грей

5
@alexgray немає прямого способу зробити це, але ви можете встановити їх на одну і ту ж змінну:var x = 100; $el.css({width: x, height: x});
Дейв Манкофф

39

Використовуючи звичайний об’єкт, ви можете з’єднати рядки, що представляють назви властивостей, з відповідними їм значеннями. Наприклад, змінити колір тла та зробити текст сміливішим, виглядатиме так:

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

Крім того, ви також можете використовувати імена властивостей JavaScript:

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

Більше інформації можна знайти в документації jQuery .


18

будь ласка, спробуйте це,

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

16

Ви також можете використовувати attrразом із style:

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

10

Погодьтеся з червоним квадратом, проте варто згадати, що якщо у вас є властивість у двох словах, text-alignви б це зробили:

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



7

Сценарій

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

Html

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

6

Ви можете спробувати це

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

1
Це не гарний підхід чувак. Краще надіслати користувачеві тип json
Awais Qarni

6

Кращий спосіб використання змінної

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

2

якщо ви хочете змінити кілька атрибутів css, тоді ви повинні використовувати структуру об'єкта, як показано нижче:

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

але стає гірше, коли ми хочемо змінити багато стилю , тому те, що я пропоную тобі, - це додавання класу замість зміни css за допомогою jQuery, а додавання класу теж читабельніше.

див. приклад нижче:

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

Однією з переваг останнього прикладу перед колишнім є те, якщо ви хочете додати трохи css onclick чогось і хочете видалити цей css другим клацанням, то в останньому прикладі ви можете використовувати.toggleClass('custom-class')

де в колишньому прикладі ви повинні встановити всі css з різними значеннями, які ви встановили раніше, і це буде складним, тому використання класової опції стане кращим рішенням.


0

Можна використовувати

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

Найкращий спосіб - використовувати $ ('selector'). AddClass ('custom-class') та

.custom-class{
width:16px,
color: green;
margin: 0;
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.