2014-12-13 102 views
11

我已经添加CSS动画到我的html页面上的各种div元素。但所有的动画同时播放&我看不到底部的动画页面。当我向下滚动页面时,如何让它们播放?CSS3动画元素,如果在视口中可见(页面滚动)

+1

使用JS,并且如果一个元素在Viewport *中,而不是向所有元素添加一个类。该类应该触发CSS3动画。 – 2014-12-13 18:41:13

回答

19

你需要使用JSjQuery的触发CSS3过渡 /动画
一旦元素是视**。

jsFiddle demo - Using inViewport plugin

loadresizescroll事件得到如果一个元素进入视窗
可以使用小的jQuery插件我已经建立: (https://stackoverflow.com/a/26831113/383904

比方说,你有一个动画盒子,像是:

<div class="box rotate"></div> 
<div class="box scale"></div> 
<div class="box translate"></div> 

比你的CSS您有:

.box{ 
    width:300px; 
    height:300px; 
    margin:500px 50px; 
    background:red; 
    transition: 1.5s; /* THE DURATION */ 
} 

.rotate.triggeredCSS3 {transform : rotate(360deg); } 
.scale.triggeredCSS3  {transform : scale(1.6); } 
.translate.triggeredCSS3 {transform : translate3d(400px,0,0); } 

其中.triggeredCSS3将由插件动态分配:

$(".box").inViewport(function(px){ 
    if(px) $(this).addClass("triggeredCSS3") ; 
}); 
+0

对不起,我用上面的插件创建了一个.js文件 - >将它添加到我的index.html - >通过将.triggeredCSS3添加到.example_animations - >编辑我的.css文件 - >但是现在没有任何动画工作了! @Roko C. Buljan – Ajith 2014-12-13 19:17:44

+0

@Ajith你在页面的头部添加了** jQuery插件**吗? – 2014-12-13 19:20:10

+1

是的,我包括插件 – Ajith 2014-12-13 19:21:17