【问题标题】:JavaScript Function To Trigger CSS3 Transition not working触发CSS3转换的JavaScript函数不起作用
【发布时间】:2012-12-25 13:03:01
【问题描述】:

您好,我的transition 在按下按钮时会被调用。我感到困惑的原因是因为它以前工作过,但后来我把它移到了另一个 div 上,现在不行了?当我的意思是它不工作时,我的意思是该函数工作(因为它确实做某事)然后运行回调,但是当它切换类时它不会“动画”它。 div 只是停留在那里直到动画时间结束,然后运行隐藏它的回调。

所以基本上它只是隐藏它,但没有动画它应该做的滑出效果。

switchClass 的其余功能即使是让页面滑回的功能也能正常工作。

无法正常运行的代码:

function hidepage() {
        $( ".PageShow" ).switchClass("PageShow", "PageHide", loadpanel);
// Alternative $( "PageContainer" ).switchClass("PageShow", "PageHide", loadpanel);
    };

以及随之而来的其余代码......

CSS:

#PageContainer {
   margin-top:120px;
   width:100%;
}

.PageShow {
   position:fixed;
   -webkit-transform:translate(0px,0px);
   -moz-transform:translate(0px,0px);
   -ms-transform:translate(0px,0px);
   -o-transform:translate(0px,0px);
   transform:translate(0px,0px);
   transition-duration: 0.3s;
   -moz-transition-duration: 0.3s;
   -webkit-transition-duration: 0.3s;
   transition-delay: 0.1s;
   -moz-transition-delay: 0.1s;
   -webkit-transition-delay: 0.1s;
   -o-transition-delay: 0.1s;
   transition-timing-function: ease-out;
   -moz-transition-timing-function: ease-out;
   -webkit-transition-timing-function: ease-out;
   -o-transition-timing-function: ease-out;
}

.PageHide {
   position:fixed;
   -webkit-transform:translate(-100%,0px);
   -moz-transform:translate(-100%,0px);
   -ms-transform:translate(-100%,0px);
   -o-transform:translate(-100%,0px);
   transform:translate(-100%,0px);
   transition-duration: 0.5s;
   -moz-transition-duration: 0.5s;
   -webkit-transition-duration: 0.5s;
   transition-timing-function: ease-out;
   -moz-transition-timing-function: ease-out;
   -webkit-transition-timing-function: ease-out;
   -o-transition-timing-function: ease-out;
}

【问题讨论】:

  • 注意:此代码确实有效。但是我会留下来让你知道,如果你和我有同样的问题,很可能你有一些冲突的代码,或者你需要一些延迟或类似的东西。我无法弄清楚为什么它不能正常工作,但如果你这样做,请在此处发布 :) 非常感谢,克里斯

标签: javascript jquery css html transition


【解决方案1】:

如果您将方法 .switchClass() 更改为 .removeClass().addClass(),它将起作用。看看这个jsFiddle。有两个函数,一个叫做.hidepage(),一个是.removeClass.addClass,第二个函数是.hidepagetwo(),它使用.switchClass()

真正的错误是:最后缺少});,至少在 jsFiddle 中,添加此代码后您的代码可以工作。

【讨论】:

  • 我可以看到这个工作,但我真的想使用 switchClass...我的意思是它应该工作。
  • 我已经编辑了我原来的问题,所以你可以看到更多的 JavaScript 代码
  • 我完成了 jsFiddle 以拥有一个使用 .switchClass() 的函数
  • 这和我的代码一样吗?这就是我的代码过去所做的,但现在它没有提供那种漂亮的幻灯片效果?我真的不知道是什么导致它不像以前那样运行效果:(
  • 你添加了 jQuery UI 的 javascript 和 css 吗?它与您的代码不同,您缺少 2 个参数
【解决方案2】:

看起来您使用 switchClass 不正确。这是 API 文档:

http://api.jqueryui.com/switchClass/

请注意,该方法需要 2 个强制参数和 3 个可选参数。您不能将加载面板(如果那是您的回调函数)填充到第三个参数中,因为它属于第五个。在这种情况下,您需要指定第 3 和第 4 的值,以便您的回调函数在预期的位置结束。

另外,你有很多 CSS 过渡的东西,但我的理解是 switchClass 在你的两个类之间做一个 javascript 动画。查看上面链接中的示例。您只需要在一个类中指定前样式,在另一个类中指定后样式。 switchClass 将在中间插入并在没有所有 CSS 转换的情况下执行动画。

既然你已经在类上放置了所有这些 CSS 动画,另一种方法是尝试 jQuery 的 toggleClass,它只是打开/关闭类:http://api.jquery.com/toggleClass/

【讨论】:

  • 您可以这样做,因为它识别出它的回调函数。我在我的所有其他功能上使用它并且它工作正常。但由于某种原因,它没有正确切换这个类。当我单击按钮时,它确实需要正确的时间才能使用正常工作的回调函数。好像它在切换类但没有显示它是。
  • 我已经编辑了我原来的问题,所以你可以看到更多的 JavaScript 代码
  • 我刚刚重新阅读了您的答案,我才意识到我是多少个布偶:LI 完全忘记了 JQuery 会自动对其进行动画处理 -_- 但无论如何它应该仍然可以正常工作。 ..
猜你喜欢
  • 1970-01-01
  • 2011-06-22
  • 2015-06-23
  • 2013-01-21
  • 2011-12-30
  • 1970-01-01
  • 2011-12-05
  • 2014-06-28
  • 2022-11-23
相关资源
最近更新 更多