如何在某个div上应用动画?

时间:2014-12-10 15:17:06

标签: javascript jquery css animation gsap

我有一个很长的着陆页。我想应用动画(让汽车在路上移动)。道路背景的div大约在我的着陆页的中间(我必须向下滚动页面9次)我找到了在GSAP JS的帮助下为汽车的运动制作动画的方法。但我不知道如何只在我的视口将div与道路聚焦时才能使我的动画工作。我试图搜索特定的"事件",但我找不到它。你能帮我找到问题的解决方案吗?

$(document).ready(function(){
TweenMax.to(document.getElementById("car"), 5, {bezier:{type:"cubic", values:
[{x:100, y:250}, {x:400, y:0}, {x:300, y:500}, {x:500, y:400}], 
autoRotate:["x","y","rotation", 0, true]}, ease:Power1.easeInOut});
});

2 个答案:

答案 0 :(得分:0)

使用TweenMax动画快速移动jsFiddle。请参阅jsFiddle代码。希望它有所帮助。

HTML:

<div id="car"> <img src="http://fc06.deviantart.net/fs70/f/2010/321/d/e/my_lego_car_side_veiw_by_kotetsuninja-d332j6f.png" style="height:200px;width:250px;"/></div>

<button id="chk">play</button>

JS:

$("#chk").on('click',function(){
    carplay();
});

答案 1 :(得分:0)

正如评论中所提到的,一种方法是收听scroll事件并比较窗口和元素的位置。

这是一个粗略的例子。请注意,我改变了汽车的动画方式;你可以用你的功能代替它。还有两件事:我的代码只为汽车设置一次动画,一旦用户滚动离开元素,它就不会停止动画。您可以根据需要调整这些内容。

&#13;
&#13;
function AnimateIfUserHasSeenCar() {
    if ($(window).scrollTop() + $(window).height() > $("#car").position().top) {
        $("#car").addClass("go"); //Replace this with how you create the anitmation
    }
}

$(document).ready( AnimateIfUserHasSeenCar );
$(document).scroll( AnimateIfUserHasSeenCar );
&#13;
/* All these CSS rules should be unnecesary for you. They are either for the animation or to set up the position of the car */
 .spacer {
    height:1000px;
}
#car {
    transition: transform 2s;
    height:120px;
    width:150px;
}
#car img {
    width:100%;
}
#car.go {
    transform:translatex(400px);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="spacer"></div> <!-- This is just to cause the #car to be offscreen at first -->
<div id="car">
    <img src="http://fc06.deviantart.net/fs70/f/2010/321/d/e/my_lego_car_side_veiw_by_kotetsuninja-d332j6f.png" />
</div>
&#13;
&#13;
&#13;