Jquery css()-marginLeft vs.marginLeft?
对于jQuery.css(),我被告知可以使用以下两个函数获得相同的结果:Jquery css()-marginLeft vs.marginLeft?,jquery,css,margin,Jquery,Css,Margin,对于jQuery.css(),我被告知可以使用以下两个函数获得相同的结果: $(".element").css("marginLeft") = "200px"; $(".element").css("margin-left") = "200px"; 我一直使用marginLeft,因为这是文档中使用的内容: 简写CSS属性(例如边距、背景、边框)不可用 支持。例如,如果要检索渲染的边距, 使用:$(elem.css('marginTop')和$(elem.css('marginRight'
$(".element").css("marginLeft") = "200px";
$(".element").css("margin-left") = "200px";
我一直使用marginLeft
,因为这是文档中使用的内容:
简写CSS属性(例如边距、背景、边框)不可用
支持。例如,如果要检索渲染的边距,
使用:$(elem.css('marginTop')和$(elem.css('marginRight'),依此类推
开
为什么jQuery允许
marginLeft
以及左边距
?它似乎毫无意义,需要使用更多的资源来转换为CSS左边距?jQuery只是支持CSS的编写方式
此外,它还确保无论浏览器如何返回值,都能被理解
jQuery同样可以解释
多个单词属性。例如,jQuery理解并返回
.css('background-color')和
.css(“背景色”)
我认为是这样,当通过使用一个对象在一个函数调用中设置多个css样式时,它可以保持与可用选项的一致性,例如
$(".element").css( { marginLeft : "200px", marginRight : "200px" } );
如您所见,属性未指定为字符串。如果您仍然希望使用破折号,或者对于没有破折号可能无法设置的属性,JQuery还支持使用字符串,因此以下内容仍然有效
$(".element").css( { "margin-left" : "200px", "margin-right" : "200px" } );
如果没有这里的引号,javascript将无法正确解析,因为属性名中不能有破折号
EDIT:JQuery似乎并没有真正区分它的左边,相反,它只是传递为DOM指定的要关注的属性,很可能是使用style[propertyName]代码>jQuery的底层代码将这些字符串传递给DOM,这允许您以非常类似的方式指定CSS属性名称或DOM属性名称:
element.style.marginLeft = "10px";
相当于:
element.style["margin-left"] = "10px";
为什么jQuery既允许保留保证金,也允许保留保证金?它似乎毫无意义,并使用更多的资源转换到CSS页边距左侧
jQuery并没有做什么特别的事情。它可能会更改或代理传递给.css()
的某些字符串,但实际上jQuery团队没有投入任何工作来允许传递这两个字符串。没有使用额外的资源,因为DOM完成了这项工作。当使用的是marginLeft时:
$("div").css({
marginLeft:'12px',
backgroundPosition:'10px -10px',
minHeight: '40px'
});
理论上,两个代码块将做相同的事情。我们可以在第二个块上使用连字符,因为它是一个字符串值,而与第一个块相比,它在某种程度上是一个对象。
现在这应该有道理了。嗨,我试过这个,它正在工作
$("#change_align").css({"margin-top":"-39px","margin-right":"0px","margin-bottom":"0px","margin-left":"719px"});
回答得晚,但没有人指定带破折号的css属性在jquery的对象声明中不起作用:
.css({margin-left:'200px'});//won't work
.css({marginLeft:'200px'});//works
所以,如果您喜欢在jquery代码中使用破折号样式属性,请不要忘记使用引号
.css({'margin-left':'200px'});//works
jQuery在这里没有做的事情得到了认可,底层DOM处理两个不同的字符串。“引擎不需要转换字符串。”lol什么?我认为您需要了解属性是如何工作的。@Raynos,是的,但是在这个过程中,有些东西必须解析其中的一个(或者可能两者都解析),以确定它实际上想要做什么。现在,通过阅读另一个答案,我承认JQuery在调用DOM style[]属性时可以同时使用字符串版本,因此在这种情况下没有区别,因为DOM仍然以任何方式使用字符串(或者JQuery以不同的方式传递它们-我找不到任何资源来证明这两种方式)不,同样,对象上的属性不是这样工作的,它们都是字符串marginLeft:“200px”
只是“marginLeft:“200px”
的糖。解析是在加载文件时完成的,而不是在运行时。可以说它的速度稍微慢了一点(几纳秒?),但这是一个史诗般的微观优化。@musefan您是否考虑过您的代码比Andy E的慢95%@雷诺斯:好吧,现在我们有进展了。我没有意识到解析是在运行时完成的。谢谢你提供的信息;)作为旁白,与课堂相比,速度非常慢。基本上,.style
和.css
是魔鬼。
.css({'margin-left':'200px'});//works