Как определить несколько атрибутов 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 они обязательны из-за дефиса в имени.

Ответы:


929

Лучше просто использовать, .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 и Jonas.
Дан

4
@redsquare Пожалуйста, рассмотрите возможность добавления следующего в ваш ответ. Из 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
чтобы это работало, вы должны изменить синтаксис: $ ('# message'). css ({ширина: '550px', высота: '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});
dave mankoff

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


10

Согласитесь с redsquare, однако стоит упомянуть, что если у вас есть свойство из двух слов, как text-alignвы бы сделали это:

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




6

Вы можете попробовать это

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

1
Это не очень хороший подход, чувак. Лучше отправлять пользователю json type
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.