【问题标题】:positioning issue with translate3d per javascript, jquery每个javascript,jquery的translate3d定位问题
【发布时间】:2013-09-15 20:20:51
【问题描述】:

我正在处理我的一个小项目,并注意到一个奇怪的问题。

这里是fiddle

如果您刷新小提琴并转到页面 "list" 然后转到 "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 变量。之后,它应该相应地进行动画处理。正如我所说,由于某种原因,定位不会在动画之前发生。

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

提前致谢 阿洪

编辑:

不幸的是,offSetWidth 修复仅适用于 chrome,但不适用于 Firefox。 那么也许有人还有其他想法?

【问题讨论】:

  • 您使用的是哪个版本的 Firefox。它在我的 Firefox 版本 23.0.1 上完美运行

标签: javascript jquery css


【解决方案1】:

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

你的函数看起来像这样,

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/。它现在工作正常。

【讨论】:

  • @arkhon 我能知道它在哪个版本的 Firefox 上不工作吗?
  • 是的,当然。我也使用 23.0.1。 Firefox 表现出非常奇怪的行为。小提琴适用于前几次链接点击。在一些随机点击后,模具定位再次关闭。用小提琴和本地确认它。 Chrome、IE10、Mobile Chrome、Android Stock Browser 和 Mobile Firefox 都能完美运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
  • 2011-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多