2013-05-29 52 views
3

我花了好几个小时尝试了一切,但到目前为止我找不到任何答案。如何在点击上为div创建动画,然后在第二次点击时反转动画?

我正在尝试创建一个动画,其中访问者点击一个方形图像,该图像将“翻转”为非常像新Windows标志的梯形形状。从这个元素的后面,同时,另一个div将向右滑动以获得关于图像的信息。

创建,这是好的,看到一个工作示例on my site, here:

(此功能目前仅适用于WebKit浏览器,因为我还没有得到全面的供应商前缀和后面的DIV没有滑出正确,但我我确定你可以理解我想在这里实现什么 - 例如Windows 8的开始屏幕拼贴。)

使用的动画是animate.css中的flipInY,中间的关键帧被删除。我原本打算使用Hover来运行动画,但试图在移动网站上实现这一点将是困难的,因此jQuery的“onClick”事件似乎是更好的选择。

我已经设法让onClick switchClass JQuery函数工作,但只为第一个动画,第二个点击只是再次启动动画,而不是真正地颠倒它。我会在这里包括代码,但我删除它寻找更好的解决方案,我没有找到。

This question and answer goes a way to solving the problem, however it is for a different 'slideUp' animation and uses two different buttons, which i'd rather replace with one button that would toggle the effect.

我真的很感激任何帮助,如果你认为我试图在这个完全错误的方式请别人提出好的建议!

+0

嗨,老兄,我爱你设计你的网站! –

+0

非常感谢!还不完全,但谢谢你的赞赏! – Oliver

回答

0

你尝试:

animation-direction:alternate; 
-webkit-animation-direction:alternate; /* Safari and Chrome */ 

非常好的效果BTW :)

+0

我已经尝试过这种方式,但它不会'恢复'到原来的状态,如果您再次尝试该网站,我已经添加了此代码,但动画仅在我将鼠标悬停在方框上时播放,当我移动鼠标时它的原始形式。 – Oliver

0

如果我是你,我会使用jQuery toggleClass();

+0

我曾尝试toggleClass,添加/删除类和switchClass的组合,但它不想扭转动画,或者我做错了方式。简单的过渡,如改变背景颜色的作品,但我想实现可能太复杂,我不明白为什么。 – Oliver

0

也许我不理解你,但:LIVE DEMO

html:

<div class="wrap"> 
<div class="over">yellow</div> 
<div class="box">red</div> 
</div> 

JS:

$('.over').click(function() { 
$('.box').animate({marginLeft: '150', 
        width: '120', 
        height: '120', 
        marginTop: '-10' 
        }, 300); 


setTimeout(function(){ 
    $('.box').css('zIndex',80); 
} , 400); 

$('.box').animate({marginLeft: '0'}, 300).animate({width: '100', height: '100', marginTop: '0'}, 300); 
}); 

$('.box').click(function() { 
$('.over').animate({ 
        marginLeft: '150', 
        width: '120', 
        height: '120', 
        marginTop: '-10' 
        }, 300).css('zIndex',5); 

$('.box').css('zIndex',10); 
setTimeout(function(){ 
    $('.over').css('zIndex',70); 
} , 400); 
$('.over').animate({ 
    marginLeft: '0'}, 300) 
    .animate({width: '100', 
      height: '100', 
      marginTop: '0'}, 300); 

}); 
+0

这太棒了,非常感谢!我刚刚在Javascript中添加了一些其他动画,例如更改背景颜色,这可能吗? – Oliver

+0

我不知道我是否理解你:动画背景改变?像不透明的红色变成黄色,例如... – OnengLar

相关问题