http://johnpolacek.github.io/...有个插件网站
其中有一个滚动的动画效果:位置如下图
1、向下滚动 左右两边的内容向中间移动
2、而向上滚动 两个内容又退回到左右两边
看下了网站的代码,发现它是这么写的
witch (anim.attr('data-animation')) {
case 'fly-in-left':
anim
.parent().css('overflow','hidden');
scrolldeck.controller.animate(anim, { delay: windowHeight/2, duration: windowHeight/2, property:'left', start:-1200 });
break;
case 'fly-in-right':
anim
.parent().css('overflow','hidden');
scrolldeck.controller.animate(anim, { delay: windowHeight/2, duration: windowHeight/2, property:'right', start:-1200 });
break;
animate()方法里的内容是另一个$.function类方法里封装了。。没法看懂- -
自己试了下用$(window).scroll()方法 完全没法实现,因为scroll()滚动不分上下方向- -上下滚动都是触发一样的内容
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
原理:先给元素设置一个left值让其隐藏,当滚动条到一定位置,改变其left值让其出现。改变幅度与滚动幅度正相关。透明度那个也是同理。不过,其中要判断滚动条向上滚动还是向下滚动。我给你实现了其中一个,另外自己摸索实践一下。代码很粗糙,理解一下,也不要管我在意我的命名,就想快点给你搞出来,所以很粗糙。只考虑实现,没考虑性能。DOM操作你可以自行优化。
scrollTop
自行摸索结果- -
要点:
1、为了更清楚简单地测试效果,这里默认元素elLeft的初始left为0
2、只有当elLeft进入可视区域才开始发生位移,改变left,所以没到可视区域(可视窗口高度+可视窗口之上高度<elLeft.offset().top)时,让偏移量一直保持0不动
问题:
1、由于浏览器不同,鼠标滚动的默认距离都是不同的,举例来说
chrome的$(window).scrollTop()默认是每次100高度,而firefox则是132高度
2、滚动条总长度不确定,举例来说:
如果整个滚动条长度是1123,每次滚动高度100,那么最后会多出23
实际测试结果,以上两个问题都会导致left偏移的量不均匀,就是说,会导致每次left加减100,但是突然变成只加减了23...