解决js中onscroll事件失效的办法

前言:
这几天在写界面时,想要使用onsrcoll事件,以便达到滑动到一定位置时出现想要的效果,
但是在实现过程中,并没有理想的出现该出现的效果,在网上查阅了很多办法,基本上都是说高度或者滚动条的问题,尝试后也并没有解决。

所以如果你也是这样的情况,不妨来看看下面这种解决方法:

开启正文:
首先来看下我们的代码:

创建两个盒子box 与 nr

    <div class="box">
        <div class="nr"></div>
    </div>

注意:最外层box高度设置成大于html的高度,这时候界面会自动出现垂直滚动条

        .box{
           width:100%;
           /* box高度要大于html的高度 */
            height:1000px; 
            background:yellow;
        }
        .nr{
            display:none;
             /*这里没有这是nr与box的距离,所以在滑动时会出现在最上面,大家可以自行设置距离 */
            width: 200px; 
            height:200px;
            background:orange;
        }

最重要的js代码来了

        var box = document.querySelector('.box');
        var nr = document.querySelector('.nr');
        window.onscroll = function(){
            var scrollTop = document.scrollTop || document.body.scrollTop;
            console.log(scrollTop);
            if(scrollTop > 200){
                nr.style.display = 'block';
            }
        }

这是不是大家常用的写法,但是这个时候却不会出现任何效果,那么这个时候该怎么办呢,目前博主仅发现有以下两种方法可以解决

第一种:

<!-- 去掉该代码 -->
<!-- <!DOCTYPE html>  -->

第二种:

            // 增加 document.documentElement.scrollTop 代码
 var scrollTop = document.scrollTop || document.body.scrollTop || document.documentElement.scrollTop;

原因:博主查了下大概是兼容性的问题,有兴趣的伙伴可以去查一查,博主暂时还没有彻底了解这个问题

下面我们一起来看下效果吧,注意这里博主没有设置nr盒子与box盒子的距离,所以当滑动距离大于200时,盒子会出现在最上面

图片
最后,欢迎批评与指正啦 ( •̀ ω •́ )✧

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值