我正在尝试创建一个水平视差网站。我有一张ID为#ellipse
的图片,可以从右到左滑动不同的位置,比如说 -
item.screenPos=["320%","220%","120%","34%","-80%","-180%","-280%","-380%"];
当此图像到达34%的位置时,它在屏幕上可见。
我想要另一张身份#strip
的图片(不滑动并固定在屏幕中央),当上面的图像(标识为#ellipse
)到达位置时,旋转90度34%。
目前我正在使用它 -
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#ellipse").position("34%")(function(){
$("#strip").rotate({angle:90});
});
});
</script>
任何人都可以帮助我。我愿意使用javascript,jquery,css&amp; PHP。
答案 0 :(得分:1)
您需要使用库进行视差,或者定义在视差动画前进时触发的事件。例如,假设您的视差动画将由滚动位置控制:
// catch the event that triggers the animation
// this could be a mouse position, a accelerometer angle, etc
$(window).scroll(function(){
var currentScrollPosition = $(document).scrollTop(),
// lets say your scroll animation should happen in the first
// 300px of scroll, therefore 0px = first frame of anim
// 300px = last frame of anim
animationPercentage = currentScrollPosition/300; // 0 to 1
// only animate if in range
if (animationPercentage <= 1){
// now you can control stuff based on the percentage of the animation
// position = start pos + delta * %
$('#ellipse').css('left', (-380 + (320 + 380) * animationPercentage );
// rotate as a function of animationPercentage
// let's say that #ellipse is visible at 50% of the animation
if (animationPercentage >= 0.5){
$('#strip').css('-webkit-transform', 'rotate(90deg)'); // or
$('#strip').addClass('rotate');
}
}
});
现在,如果位置与动画事件不成比例,您可以执行以下操作:
item.screenPos={
"0.9":"320%", // position at 90% of animation
"0.85":"220%", // position at 85% of animation
"0.71":"120%", //... you get the point
"0.5":"34%",
"0.48":"-80%",
"0.2":"-180%",
"0.15":"-280%",
"0":"-380%"
};
并将animationPercentage
与每个值的键匹配。但我相信你可以自己试一试。