子元素scroll父元素容器不跟随滚动(JS实现),子元素内滚动条没有(css实现)

子元素scroll父元素容器不跟随滚动

先上代码:

if (direction == 'up' && scrollTop == 0) { 
   event.preventDefault()
}
不顶用之(谷歌和火狐中,子元素滚动到边界的时候,父元素不滚动了;但是。。。到IE时,“滚动高度直接跳过了0,直接把父元素给滚了”-----来自张鑫旭博客)。

所以,张鑫旭大神的代码就派上用场了:

$.fn.scrollUnique = function() {
    return $(this).each(function() {
        var eventType = 'mousewheel';
        // 火狐是DOMMouseScroll事件
        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();  //#test 为父元素
注意:此时是有滚动条的哦
 


如果嫌滚动条碍眼,可以用css来控制:

父元素:宽a,高b,overflow:hidden;(不让父元素撑开,固定死高度);

子元素:宽a+30px(左右),高b,overflow:auto;(好吧,子元素你随便拉长,撑起来吧,要不然,还怎么滚着玩呢)



弹窗里面有横向滚动条的实现方法:

 <div class="div-inside">
    <div class="div-outside"></div>

</div>

.div-inside{height:50px;width: 50px;overflow-x:auto;overflow-y:hidden;}

.div-outside{height:50px;width:400px;overflow-x:auto;overflow-y:hidden;}



差不多,可以天下太平,四海同贺了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值