为什么jquery / css需要top属性的’px’,而不是width或height属性?
我有以下javascript / jquery代码:
var some_div = $('', {}); some_div. css('position', 'absolute'). css('width' , '100'). css('height', '100'). css('top' , '100px'). css('background-color', '#ddf'); some_div.appendTo('body');
它按预期工作,因为它从body的顶部定位some_div
100像素,并将其宽度和高度设置为100像素。
如果我将top
属性的行更改为css('top' , '100').
即如果我省略了px
,则该框忽略指定的属性。 显然,top属性需要px
才能生效。
我想知道为什么我不必为盒子的宽度和高度指定px
。
仔细阅读了源代码后,它看起来像是一个jQuery怪癖而不是浏览器或CSS奇怪。 jQuery的css函数在此函数中对您提供的值进行大部分预处理。
该函数以各种方式处理某些CSS奇怪和输入奇数。 一种方法是通过添加“px”将数字转换为字符串。 这从不适用于您的情况,因为您提供字符串。
jQuery还有一组钩子,在将它们设置在DOM节点上之前调用CSS值。 您的宽度和高度值在这里被增加,以考虑IE5.5的盒子模型和由setPositiveNumber()
添加的px。
结论:从顶部,底部,左侧,右侧,宽度和高度样式中省略’px’是无效的CSS。 由于jQuery正在修改您的属性以支持过时的浏览器和数值,因此您可以通过省略“px”来消除宽度和高度属性中的无效CSS!
以下将有效:
css('top' , 100)