我想用js移动div或section。我有一个在Chrome中运行的代码。此代码根据显示定位项目。我的问题是这段代码不合逻辑,在Android和其他设备上也不是那么好。
所以请检查我的代码,并帮我重写,以便项目符合其他项目而不是显示。
$(window).bind('scroll',function(e){
parallaxScroll();
});
function parallaxScroll(){
var scrolled = $(document).scrollTop();
if (scrolled < 2000) {
$('#land1').css('top',(0-(scrolled*.39))+'px');
$('#trees1').css('top',(0-(scrolled*.4))+'px');
} else {
ertek = -500;
$('#trees1').css('top',ertek+'px');
$('#land1').css('top',ertek+'px');
}
}
答案 0 :(得分:1)
实际上,简单地使用滚动事件是一个糟糕的选择(不幸的是,这是一个常见的选择)。
当用户滚动页面时,滚动事件会被触发很多。它有时被触发太多,有时则没有你想要的那么多。我的意思是滚动事件与&#34;帧刷新率不一致&#34;你的浏览器。我可以为一个帧触发两次(使动画更快,因为浏览器会在一个中挤出两个步骤),或者根本不会为另一个触发(使动画更慢)。所以动画看起来并不流畅,尤其是在功能较弱的设备上。
你基本上有两个解决方案:
示例:http://codepen.io/foleyatwork/pen/xButc/
从技术上讲,它不需要对原始代码进行太多更改(这意味着您可以保留您找到的所有比率等)。你&#34;只是&#34;请求您的浏览器等到下一帧刷新以更新给定元素的位置。即使您像以前一样触发滚动事件,动画也会显得平滑。
此处有更多信息:http://www.html5rocks.com/en/tutorials/speed/animations/
示例:http://codepen.io/keithclark/pen/JycFw
这个要求使用perspective
和transform
元素删除您在javascript中完成的所有内容,以转到完整的CSS3动画。它有两大优势:
HTML5Rocks实际上在视差here上有一个很好的帖子。请注意,它是两年前写的,所以现在可能不会出现一些限制。但它提供了一些替代方案,因此您可以根据自己的情况选择最佳选择。