jQuery.css() - marginLeft vs. margin-left?

时间:2011-10-26 12:06:12

标签: jquery css margin

使用jQuery.css()我被告知我可以使用以下两个函数来获得相同的结果:

$(".element").css("marginLeft") = "200px";

$(".element").css("margin-left") = "200px";

我一直使用marginLeft,因为这是文档中使用的内容:

http://api.jquery.com/css/

  

速记CSS属性(例如边距,背景,边框)不是   支持的。例如,如果要检索渲染边距,   使用:$(elem).css('marginTop')和$(elem).css('marginRight')等等   上。

为什么jQuery允许marginLeft以及margin-left?它似乎毫无意义,并使用更多资源转换为CSS margin-left

6 个答案:

答案 0 :(得分:50)

jQuery的底层代码将这些字符串传递给DOM,这允许您以非常类似的方式指定CSS属性名称或DOM属性名称:

element.style.marginLeft = "10px";

相当于:

element.style["margin-left"] = "10px";
  

为什么jQuery允许marginLeft以及margin-left?它似乎毫无意义,并使用更多资源转换为CSS margin-left?

jQuery并没有真正做任何特别的事情。它可能会改变或代理您传递给.css()的某些字符串,但实际上是从jQuery团队输入 no work 以允许传递任一字符串。没有使用额外的资源,因为DOM可以完成工作。

答案 1 :(得分:35)

我认为它可以保持与在一个函数中通过使用对象调用多个css样式时使用的可用选项的一致性,例如......

$(".element").css( { marginLeft : "200px", marginRight : "200px" } );

如您所见,该属性未指定为字符串。如果您仍想使用破折号,或者对于没有破折号可能无法设置的属性,JQuery还支持使用字符串,因此以下内容仍可正常运行...

$(".element").css( { "margin-left" : "200px", "margin-right" : "200px" } );

这里没有引号,javascript无法正确解析,因为属性名称中不能包含短划线。

编辑:看起来JQuery实际上并没有区分它,而只是传递为DOM指定的属性,最有可能是style[propertyName];

答案 2 :(得分:6)

迟到回答,但是没有人指定带有破折号的css属性在jquery中的对象声明中工作:

.css({margin-left:'200px'});//won't work
.css({marginLeft:'200px'});//works

因此,如果您更喜欢在jquery代码中使用破折号样式属性,请不要忘记使用引号。

.css({'margin-left':'200px'});//works

答案 3 :(得分:5)

何时使用 marginLeft

$("div").css({
    marginLeft:'12px',
    backgroundPosition:'10px -10px',
    minHeight: '40px'
});

如您所见,带有连字符的属性将转换为camelcased格式。使用上面上一个代码块中的margin-left会使JavaScript疯狂,因为它会将连字符视为减法操作。

何时使用 margin-left

$("div").css("margin-left","12px").css("background-position","10px -10px").css("min-height","40px");

理论上,两个代码块都会做同样的事情。我们可以在第二个块上允许连字符,因为它是一个字符串值,而与第一个块相比,它有点像一个对象。
现在这应该是有道理的。

答案 4 :(得分:4)

jQuery只是支持CSS的编写方式。

此外,它确保无论浏览器如何返回值,都将理解

  

jQuery可以同样解释CSS和DOM格式   多字属性。例如,jQuery理解并返回   .css('background-color')和.css的正确值   的CSS( '的backgroundColor')。

答案 5 :(得分:-1)

嗨,我试过这是有效的。

$("#change_align").css({"margin-top":"-39px","margin-right":"0px","margin-bottom":"0px","margin-left":"719px"});