我有一个滚动的DIV,通过JQuery确定中间的元素。我尝试过同时使用position()
和offset()
参数,但在两种情况下,Firefox都没有得到正确的答案,而Chrome和Safari也是如此。
position().top
或offset().top
确定容器中间元素的位置。然而,firefox正在从滚动容器中确定它,因此在滚动期间总是将第三个元素放下而不是中间元素。
以下是2个小提琴,一个使用.position()
,另一个使用.offset()
。
OFFSET()
- http://jsfiddle.net/pxfunc/XHPYF/7/
POSITION ()
- http://jsfiddle.net/U4qyp/133/
任何人都知道为什么会发生这种情况或如何解决它?
编辑 -
问题的一部分是插件iScroll,但这是使元素工作所必需的,所以我想知道有没有办法确定哪个元素在容器顶部下面是100px;
。
答案 0 :(得分:1)
看起来iScroll使用CSS转换而不是传统的顶部/左侧位置。这很好,可能更优,但似乎由于某种原因CSS转换属性没有反映在Firefox DOM中。 (至少不在Firebug属性列表中。)我找不到一篇好的文章来指出它是一个bug还是故意的。
您可以使用iScrollers属性来获取当前偏移量,这是驱动CSS变换设置的原因。
我在jsFiddle上分享你的例子,检查出来。 http://jsfiddle.net/cburyta/GvPPM/9/
似乎iScroll对我不起作用(至少我链接到的例子实际上并没有滚动,虽然它似乎找到了像滚动的中间元素......奇怪。)