如何在jQuery中定义多个CSS属性?


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表示法,由于名称中的连字符,因此必须使用引号。

Answers:


928

更好地使用 .addClass()即使您有1个或更多,也。更具可维护性和可读性。

如果您确实想做多个CSS属性,请使用以下命令:

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

注意!
任何带连字符的 CSS属性都必须加引号。
我已将引号引起来,所以没有人需要澄清这一点,并且代码将具有100%的功能。


28
这实际上是不正确的-属性需要在它们周围加上引号以及值。请参阅Dave Mankoff的答案。
rlb.usa 2011年

16
@ rlb.usa实际上是不正确的,上面的作品jsfiddle.net/ERkXP。感谢您的不赞成!
redsquare 2011年

9
为什么在地球上提出甚至争辩这种非标准语法!只需使用'-'即添加样式font-size,它就会失败。如果是关于证明限制,那么也$('div').css({ width : 300, height: 40 }); 有效。
2012年

26
如果CSS属性具有破折号(即文本溢出),则需要在该属性两边加上引号。我认为这就是rlb.usa和Jonas所说的。
2012年

4
@redsquare请考虑在您的答案中添加以下内容。从jQuery APIFor 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为SAME值...是.css({ { width, height} : 300 })吗?
亚历克斯·格雷

5
@alexgray没有直接的方法可以执行此操作,但是您可以将它们分别设置为相同的变量:var x = 100; $el.css({width: x, height: x});
dave mankoff 2013年

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



7

脚本

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

HTML

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


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

但是,当我们想更改很多样式时,情况变得更糟,因此我建议您添加一个类,而不是使用jQuery更改CSS,并且添加一个类也更具可读性。

参见以下示例:

的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设置为之前设置的不同值,这将很复杂,因此使用class选项将是更好的解决方案。


0

您可以使用

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

最好的方法是使用$('selector')。addClass('custom-class')和

.custom-class{
width:16px,
color: green;
margin: 0;
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.