2017-06-16 53 views
0

我在css中动画我的网站导航,我的问题是这样的。如何在两个不同的css动画之间交替

// Html file 

     <html> 

     <div class="class-one"> 
     // some value 
     </div> 

     </html> 

    // Css file 

     .class-one { 
     width: 100px 
     height: 100px 
     animation: first-animation paused 7s; 
     animation: second-animation paused 7s; 
     } 

我正在控制每个动画播放jQuery时的行为,与此类似。

// Javascript file 

$(".class-one").click(function() { 

    $(".class-one").css("animation-play-state", "running"); 

    }); 

我的问题是,我不能指定我想玩哪个动画,这只是播放第二个动画,而不是第一个。我怎样才能指定我想玩的动画?

在此先感谢!

+0

你想两个动画结合成一个单一的动画,或者你想要彼此之后运行它们?如果是后者,则只需将动画的关键帧组合起来即可。请记住在CSS中,最后一个属性会覆盖它之前的那些属性 - 这就是为什么只有第二个动画正在播放。 – Terry

+0

@Terry我想根据不同的情况播放每个动画。例如:如果页面上的元素1超过100像素,则播放动画1,如果不是,则播放动画2。 –

+0

你想如何指定什么动画?通过用户交互?通过切换课程?这就是我不明白你的问题。 – Terry

回答

0

在你的CSS中,第二个动画属性声明覆盖了第一个。你需要两个类:

// HTML 
<body> 
    <div class="element-in-question"></div> 
</body> 


// CSS 
.class-one { 
    width: 100px; 
    height: 100px; 
    animation: first-animation paused 7s; 
} 

.class-two { 
    width: 100px; 
    height: 100px; 
    animation: second-animation paused 7s; 
} 

然后使用jQuery,您可以设置类的元素对你希望看到动画:

// jQuery  
if (condition) { 

    // to set first-animation 
    $('.element-in-question').addClass('class-one').removeClass('class-two'); 

} else if (otherCondition) { 

    // to set second-animation 
    $('.element-in-question').addClass('class-two').removeClass('class-one'); 
} 

// trigger with your existing code 
$('.element-in-question').css('animation-play-state', 'running'); 
+0

非常感谢你!这有助于解决我的问题! –

+0

很高兴帮助:)只要记住 - 在CSS中,如果你多次声明一个属性(在你的情况下动画属性),只有最后一个声明将适用。当第二个值被设置时,该属性的第一个值将被清除。出于这个原因,在一个类定义中多次声明一个属性永远不是一个好主意! – McHat

相关问题