jQuery 调用 CSS3 版本的 stop(true,false) 和事件动画?

Posted

技术标签:

【中文标题】jQuery 调用 CSS3 版本的 stop(true,false) 和事件动画?【英文标题】:jQuery call CSS3 version of stop(true,false) and animate from event? 【发布时间】:2012-12-28 01:58:58 【问题描述】:

谁能告诉我如何使用 CSS3 来做this?

http://jsfiddle.net/dYYZP/65/

几个月来,我一直试图弄清楚如何通过事件调用 CSS3 转换并停止像 jQuery 的 stop(true, false) 这样的转换。

<div id="outer"></div>
<div id="inner"></div>

var under = true;
$("#outer").bind(
    click : function() 
        if(under)
            $("#inner").stop(true, false).animate( 
                left: 50
            , 500);
        
        else
            $("#inner").stop(true, false).animate( 
                left: -50
            , 500);    
        
        under = !under;
    
);

【问题讨论】:

(offtopic) 此代码已简化 (jsfiddle.net/dYYZP/76) @roXon 我不喜欢使用三元,因为我有大量的动画触发。 js 做的越少,对我来说就越好,但是谢谢。 相信我有一天你会成为三元组的朋友,它会比 12 行代码中的 if else 更具可读性,特别是如果你需要处理大量的动画。可能你会开始更面向编程,并创建可重用的动画功能。 任何方式。您打算如何使用纯 css 注册点击? @roXon i loooooove 三元,但我不明白最后的屈尊俯就。 【参考方案1】:

http://jsfiddle.net/dYYZP/81(请注意,为方便起见,我只包括了-webkit)。

CSS 2D 变换translate 可用于沿 X/Y 轴移动元素。这与 CSS3 过渡的组合允许类似的动画。

如果您想完全使用 CSS 来完成此操作,那么您必须将红色框设置为 &lt;label&gt; 用于复选框元素,然后使用 :checked + .slideout 之类的选择器来包含翻译规则。

动画期间无法停止 CSS 过渡;仅在动画完成后(通过删除规则)。

【讨论】:

因为您的示例正是 OP 需要的,但就我们需要使用 JS 注册点击事件而言,我认为我使用的 .toggleClass() 正在简化您的演示(以及 OP 需要)很多:) @ExplosionPills:这是因为 roXon 简化了你的脚本。 @roXon 我完全赞成简化脚本。我只是在构建 OP 已经拥有的东西,因为它毕竟在那里。似乎他想做的不仅仅是在点击时切换课程。 @ExplosionPills 你完全正确。在这种情况下,您可以建议一个 2-function 方法,这意味着使用 .toggle(fn1, fn2) :) @roXon 如果它不像我原来的小提琴那样动画化,为什么我需要它?它不起作用【参考方案2】:

this是你想做的吗?

我刚刚将以下代码添加到您的 #inner 的 css 中:

transition:left .5s;
-moz-transition:left .5s;
-webkit-transition:left .5s;

希望对你有帮助。

【讨论】:

天才!我不敢相信这很容易!动画完全是css3? 等不及我们不必使用 -browser-specifics 的那一天了。

以上是关于jQuery 调用 CSS3 版本的 stop(true,false) 和事件动画?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 jquery transit 中暂停和重新启动 css3 转换

js链式调用

jQuery中停止动画stop

第一百六十五节,jQuery,过滤选择器

jquery .stop() 不工作

jquery 选择器与 css3 选择器的性能