两层滚动条互补干扰
Posted mudeng007
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两层滚动条互补干扰相关的知识,希望对你有一定的参考价值。
滚动内层列表时,速度过快,会导致外层也滚动,影响用户体验
解决办法 一 :鼠标内层时,禁用外层滚动条
<div class="zoneDetails-content blockStyle-content layerScroll"
onmousewheel="return divScroll(event,this)"> </div>
divScroll:function(event,scroller){ var k = event.wheelDelta? event.wheelDelta:-event.detail*10; scroller.scrollTop = scroller.scrollTop - k; return false; },
解决办法 二:鼠标滚动到顶部/底部时,再出发外层滚动条
*{margin:0;padding:0;} body{height:1500px;} .mark{width:100%;height:100%;background:rgba(0,0,0,.5);position:fixed;left:0;top:0;}
.layerNode{width:200px;height:200px;left:50%;top:50%;margin-left:-100px;margin-top:-100px;
background-color:#fff;position: absolute;overflow-y:scroll;-webkit-overflow-scrolling : touch; /* ios 自带滚动条不平滑解决方法 */ }
<div class="mark"> <div class="layerNode"> <p>弹出层 start</p> <p>测试</p> <p>测试</p> <p>测试</p> <p>测试</p> <p>测试</p>
。。。
<p>弹出层 end</p> </div> </div>
//弹出层滚动条不影响到body [layerNode:需要滚动的元素] var DivScroll = function( layerNode ){ //如果没有这个元素的话,那么将不再执行下去 if ( !document.querySelector( layerNode ) ) return ; this.popupLayer = document.querySelector( layerNode ) ; this.startX = 0 ; this.startY = 0 ; this.popupLayer.addEventListener(\'touchstart\', function (e) { this.startX = e.changedTouches[0].pageX; this.startY = e.changedTouches[0].pageY; }, false); // 仿innerScroll方法 this.popupLayer.addEventListener(\'touchmove\', function (e) { e.stopPropagation(); var deltaX = e.changedTouches[0].pageX - this.startX; var deltaY = e.changedTouches[0].pageY - this.startY; // 只能纵向滚 if(Math.abs(deltaY) < Math.abs(deltaX)){ e.preventDefault(); return false; } if( this.offsetHeight + this.scrollTop >= this.scrollHeight){ if(deltaY < 0) { e.preventDefault(); return false; } } if(this.scrollTop === 0){ if(deltaY > 0) { e.preventDefault(); return false; } } // 会阻止原生滚动 // return false; },false); } //调用 var divScroll = new DivScroll(\'.layerNode\');
以上是关于两层滚动条互补干扰的主要内容,如果未能解决你的问题,请参考以下文章
SwipeRefreshLayout 干扰 ViewPager 中的 ScrollView
音频处理Melodyne 网络缩放功能 ( 音符分离线 | 片段分离线 | 窗口滚动条 | 网格缩放 | 修改图像显示位置 | 显示五线谱 )