9

我正在查看 jQuery 代码并找到了这一行:

elem.runtimeStyle.left = elem.currentStyle.left;

https://github.com/jquery/jquery/blob/449e099b97d823ed0252d8821880bc0e471701ea/src/css.js#L169

我不确定为什么要这样做。这不是没用吗?

将 runtimeStyle 设置为 currentStyle 不会覆盖任何内容。除了让 runtimeStyle 在你下次阅读时可读——现在似乎不需要了。

我理解这里的整体概念以及为什么存在该代码块(将数字非像素值转换为适当的像素值,方法是将左侧设置为非像素值并读取其像素值,然后将左侧恢复为原始值价值)。

编辑请参阅下面的答案,了解为什么我认为已经完成(带有 jsFiddle 插图!)。

4

2 回答 2

1

这实际上是一个 IE hack,上面的 RHS 计算的值被输入到上面的 LHS 中。即。我们正在获取新值以获取计算值。查看此博客以了解更多信息http://jsperf.com/testing-awesome-hack-for-ie

于 2012-07-06T19:05:29.677 回答
1

我一直在思考这个问题。这就是为什么我相信它已经完成了:

将 runtimeStyle 设置为 currentStyle 可确保这是应用于元素的样式(运行时样式胜过内联样式)。因此,当您elem.style.left在下一行中进行设置时,UI 不会发生任何变化。但是,新的像素值仍然可以使用elem.style.pixelLeft- 因为这只是将 CSS 上的非像素值转换为像素值。pixelLeft不是对实际位置的测量,它只是对像素值的转换。

看到这个:http: //jsfiddle.net/RaSzc/

所以这样做是为了在 UI 中没有任何变化的情况下计算出像素值

于 2012-07-16T18:03:40.387 回答