javascript - scroll滚动问题
问题描述
1,https://www.kayak.com.hk/holi...主要效果就是这个网站的效果。
当滑动滚动条的时候,右边的p会向下滚动,这时候左边的p也会跟着滚动。但是由于左边的p太长,所以要隐藏最上面的一部分,这个效果实现。当向上滚动的时候,要隐藏左边p的下面的部分,主要就卡在这边了。试过一个方法, 就是判断前后滚动条的位置来显示,效果可以,但是出现页面卡顿,应该是多次进行前后滚动条的判断导致的。。下面是代码:
if($(window).height() > 550){
var top = 240; if($(document).scrollTop() > top){ var beforeScroll=$(document).scrollTop(); var topIframe = -180; $('#SearchPackageLeftp').css({'position': 'fixed','top': topIframe}); $(window).scroll(function(){var afterScroll=$(document).scrollTop();var result=afterScroll-beforeScroll; if(result<0){ var downIframe=10; $('#SearchPackageLeftp').css({'position': 'fixed','top':downIframe});} beforeScroll=afterScroll; });}else{ $('#SearchPackageLeftp').css({'position': 'relative','top': '0px'}); }}
求大神解释。。卡一天了。。。。。随时在线,不理解我可以详细解释。。谢谢大家了
问题解答
回答1:页面卡顿可否考虑函数节流?
if($(window).height() > 550){ var top = 240,timer = 0;if($(document).scrollTop() > top){var beforeScroll=$(document).scrollTop();var topIframe = -180;$('#SearchPackageLeftp').css({'position': 'fixed','top': topIframe});$(window).scroll(function(){ if (timer === 0) {timer = setTimeout(function() { timer = 0; var afterScroll=$(document).scrollTop(); var result=afterScroll-beforeScroll; if(result<0){var downIframe=10;$('#SearchPackageLeftp').css({'position': 'fixed','top':downIframe}); } beforeScroll=afterScroll; }, 500) } }); }else{$('#SearchPackageLeftp').css({'position': 'relative','top': '0px'}); }}回答2:
我感觉是不是可以考虑监听window的scroll事件 如果scrollTop达到一定的高度就给左边p一个fixed定位 小于这个高度就取消fixed
回答3:尝试用 translate 代替设置 top 并且包在 requestAnimationframe 里,看能不能解决卡顿。
回答4:已经解决
function scrollHeight(topIframe){ var top = 240;var timer=0; if($(document).scrollTop() > top){var beforeScroll=$(document).scrollTop();$('#SearchPackageLeftp').css({'position': 'fixed','bottom': topIframe});$('#SearchPackageLeftp').css('top','');$(window).scroll(function(){ if(timer===0){timer=setTimeout(function() {timer=0;var afterScroll=$(document).scrollTop(); var result=afterScroll-beforeScroll;if(result<0){ $('#SearchPackageLeftp').addClass('scrollstyle'); if($(document).scrollTop()<top){var downIframe=0;$('#SearchPackageLeftp').css({'position': 'relative','bottom':downIframe}); }}else{ $('#SearchPackageLeftp').removeClass('scrollstyle');} beforeScroll=afterScroll;},0) }});}else{$('#SearchPackageLeftp').css({'position': 'relative','bottom': '0px'}); }}
相关文章:
1. javascript - 怎么看网站用了什么技术框架?2. php md5 16字符二进制格式 用JAVA写3. javascript - vue 怎么渲染自定义组件4. mysql - 记得以前在哪里看过一个估算时间的网站5. 请教各位大佬,浏览器点 提交实例为什么没有反应6. 学习这个是不是要先学下css?7. javascript - 单个页面执行多个jsonp的ajax请求,如何判断一个ajax请求执行完毕执行再另一个?8. javascript - [MUI 子webview定位]9. javascript - angular最基础的表单验证10. javascript - node服务端渲染的困惑
