javascript - 怎么判断滚动条滚动方向?【附demo】
ringa_lee
ringa_lee 2017-04-11 12:50:43
[JavaScript讨论组]

问题描述:
怎么判断浏览器滚动条滚动方向?就是上下和左右滚动。

//获取浏览器scroll
function scroll() {
        if (window.pageYOffset != null){
        // 支持IE9 +
          return{
                    left:window.pageXOffset,
                    top:window.pageYOffset
                }
            }else if (document.compatMode == 'CSS1Compat'){
        return{
                        left:document.documentElement.scrollLeft,
                        top:document.documentElement.scrollTop
                }
                }
                return{
                    left:document.body.scrollLeft,
                    top:document.body.scrollTop
                }
            }

        window.onscroll = function(){
                var sLeft = scroll().left;
                var sTop = scroll().top;
                console.log('sLeft:' + sLeft);
                console.log('sTop:' + sTop);
    // if(){
    //  console.log('上下滚动')  
    //  }else{
    //    console.log('左右滚动')  
    //  }
            }

demo:看控制台打印出来的数值
codepen

ringa_lee
ringa_lee

ringa_lee

全部回复(2)
怪我咯

记得昨天在群里有人就问的这个问题。。。用闭包可以实现,关键是缓存好上次滑动时候的top和Left然后进行比较。

        function scroll() {
            if (window.pageYOffset != null) {
                // 支持IE9 +
                return {
                    left: window.pageXOffset,
                    top: window.pageYOffset
                }
            } else if (document.compatMode == 'CSS1Compat') {
                return {
                    left: document.documentElement.scrollLeft,
                    top: document.documentElement.scrollTop
                }
            }
            return {
                left: document.body.scrollLeft,
                top: document.body.scrollTop
            }
        }

        window.onscroll = (function () {
            var sLeft = scroll().left;
            var sTop = scroll().top;

            return function () {

                if (sTop != scroll().top) {
                    console.log('上下滚动')
                    sTop = scroll().top;
                }
                if (sLeft != scroll().left) {
                    //   console.log(sTop);
                    console.log('左右滚动')
                    sLeft = scroll().left;
                }
            }

        })();
伊谢尔伦

略麻烦。

  • 首先获得开始滚动时滚动条的x ,y坐标

  • 然后在滚动条发生变化时对之前保存的坐标进行比较。

  • 参考

document.body.scrollTop
document.body.scrollLeft
window.onscroll
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号