每个javascript,jquery的translate3d定位问题

我在我的一个小项目上工作,并注意到一个问题。

这是小提琴 。

如果您刷新小提琴并转到页面“列表”然后转到“Angebot”,您会注意到“旧页面”正确滑动但新页面向上滑动而不是向下滑动。 在我的javascript中,我在动画之前正确定位了新页面。 不知何故,在动画之前不进行定位。

这是定位部分:

if ((activePage.index() + 1) > newPageIndex) { move = pageSize; } else { move = -pageSize; } newActivePage.css({ "-webkit-transition-duration": "0", "-webkit-transform": "translate3d(0, " + -move + "px, 0)", "-moz-transition-duration": "0", "-moz-transform": "translate3d(0, " + -move + "px, 0)", "transition-duration": "0", "transform": "translate3d(0, " + -move + "px, 0)" }); activePage.css({ "-webkit-transition-duration": "0.4s", "-webkit-transform": "translate3d(0, " + move + "px, 0)", "-moz-transition-duration": "0.4s", "-moz-transform": "translate3d(0, " + move + "px, 0)", "transition-duration": "0.4s", "transform": "translate3d(0, " + move + "px, 0)" }).removeClass("page-active"); newActivePage.css({ "-webkit-transition-duration": "0.4s", "-webkit-transform": "translate3d(0, 0, 0)", "-moz-transition-duration": "0.4s", "-moz-transform": "translate3d(0, 0, 0)", "transition-duration": "0.4s", "transform": "translate3d(0, 0, 0)" }).addClass("page-active"); 

newActivePage应位于activePage之上或以下,具体取决于move变量。 之后应该相应地制作动画。 正如我所说,由于某种原因,定位不会发生在动画之前。

也许有人知道解决方案或解决方法。

在此先感谢arkhon

编辑:

不幸的是,offSetWidth修复仅适用于chrome,但不适用于firefox。 那么也许有人有任何额外的想法?

您需要使用newActivePage[0].offsetWidth;强制页面为新页面呈现第一组样式newActivePage[0].offsetWidth;

你的function看起来像这样,

 function slidePage(pageSize, newPageIndex, animSpd) { var activePage = $(".page-active"); var newActivePage = $(".pages-wrapper").children(":nth-child(" + newPageIndex + ")"); var move; if ((activePage.index() + 1) > newPageIndex) { move = pageSize; } else { move =- pageSize; } newActivePage.css({ "-webkit-transition-duration": "0", "-webkit-transform": "translate3d(0, " + -move + "px, 0)", "-moz-transition-duration": "0", "-moz-transform": "translate3d(0, " + -move + "px, 0)", "transition-duration": "0", "transform": "translate3d(0, " + -move + "px, 0)" }); newActivePage[0].offsetWidth; activePage.css({ "-webkit-transition-duration": "0.4s", "-webkit-transform": "translate3d(0, " + move + "px, 0)", "-moz-transition-duration": "0.4s", "-moz-transform": "translate3d(0, " + move + "px, 0)", "transition-duration": "0.4s", "transform": "translate3d(0, " + move + "px, 0)" }).removeClass("page-active"); newActivePage.css({ "-webkit-transition-duration": "0.4s", "-webkit-transform": "translate3d(0, 0, 0)", "-moz-transition-duration": "0.4s", "-moz-transform": "translate3d(0, 0, 0)", "transition-duration": "0.4s", "transform": "translate3d(0, 0, 0)" }).addClass("page-active"); } 

检查这个http://jsfiddle.net/L4Txr/4/ 。 它的工作正常。