美文网首页
多滚动区域,滚动不传播(里面元素滚动到底外部容器不滚动实例页面)

多滚动区域,滚动不传播(里面元素滚动到底外部容器不滚动实例页面)

作者: zhao_ran | 来源:发表于2021-12-31 11:24 被阅读0次

    多滚动区域,滚动不传播。

    overscroll-behavior: contain | auto | none;
    overscroll-behavior-x: contain | auto | none;
    overscroll-behavior-y: contain | auto | none;
    
    • auto - 默认。元素的滚动会传播给祖先元素。
    • contain - 阻止滚动链接,滚动不会传播给祖先。
    • none - 和 contain 效果一样。

    只需要在滚动容易上加一行代码:

    overscroll-behavior: contain;
    

    另一种js实现

    css

    .test {
        width: 210px;
        height: 200px;
        overflow: auto;
    }
    
    HTML
    <div id="test" class="test">
        <img src="mm2.jpg">
    </div>
    
    JS
    $.fn.scrollUnique = function() {
        return $(this).each(function() {
            var eventType = 'mousewheel';
            if (document.mozHidden !== undefined) {
                eventType = 'DOMMouseScroll';
            }
            $(this).on(eventType, function(event) {
                // 一些数据
                var scrollTop = this.scrollTop,
                    scrollHeight = this.scrollHeight,
                    height = this.clientHeight;
    
                var delta = (event.originalEvent.wheelDelta) ? event.originalEvent.wheelDelta : -(event.originalEvent.detail || 0);        
    
                if ((delta > 0 && scrollTop <= delta) || (delta < 0 && scrollHeight - height - scrollTop <= -1 * delta)) {
                    // IE浏览器下滚动会跨越边界直接影响父级滚动,因此,临界时候手动边界滚动定位
                    this.scrollTop = delta > 0? 0: scrollHeight;
                    // 向上滚 || 向下滚
                    event.preventDefault();
                }        
            });
        }); 
    };
    
    $('#test').scrollUnique();
    

    相关文章

      网友评论

          本文标题:多滚动区域,滚动不传播(里面元素滚动到底外部容器不滚动实例页面)

          本文链接:https://www.haomeiwen.com/subject/yvcwxrtx.html