Ais*_*war 9 javascript css jquery internet-explorer
我正在浏览jQuery代码,发现这一行:
elem.runtimeStyle.left = elem.currentStyle.left;
在
https://github.com/jquery/jquery/blob/449e099b97d823ed0252d8821880bc0e471701ea/src/css.js#L169
我不知道为什么这样做.这不是没用的吗?
将runtimeStyle设置为currentStyle将不会覆盖任何内容.除了在下次读取时使runtimeStyle可读 - 现在似乎不需要.
我理解这里的整体概念以及为什么存在代码块(将数字非像素值转换为适当的像素值,方法是将左侧设置为非像素值并读取其像素值,然后将左侧恢复为原始值值).
编辑请参阅下面的答案,了解为什么我认为这样做(使用jsFiddle插图!).
我一直在思考这个问题。这就是我相信它已经完成的原因:
将runtimeStyle 设置为currentStyle 可确保这是应用于元素的样式(运行时样式胜过内联样式)。因此,当您elem.style.left在下一行中进行设置时,UI 不会发生任何变化。然而,新的像素值仍然可以使用elem.style.pixelLeft- 来计算,因为这只是将 CSS 上的非像素值转换为像素值。pixelLeft不是实际位置的测量,它只是到像素值的转换。
请参阅: http: //jsfiddle.net/RaSzc/
因此,这样做是为了在 UI 中不进行任何更改的情况下计算出像素值