guangzhou

Recent posts:
Blog index
About
RSS

js计算元素是否在可视区以及控制滚动条的滑动

December 31, 2024     HTML5   38   

假如这样的业务场景:有一个wrap滚动容器,wrap的内容区content的高度超过wrap的高度,则出现纵向滚动条。随意拖动滚动条到某个位置,要判断content里面的子元素input输入框是否在可视区内,若不在可视区内,自动拖动滚动条,使其进入可视区。这样的业务场景其实经常有遇到。

项目中使用的是editormd生成的目录,目录的active item可以随着浏览器的滚动改变,但是如果目录也带滚动条,就需要添加代码来实现目录隐藏的active item显示出来

具体实现方法:

    $(document).ready(function(){
        $('body').scrollspy({ target: '.markdown-toc' });
        // 监听ScrollSpy更新事件
        var lastScrollTop = 0;
        $('body').on('activate.bs.scrollspy', function () {

            // 获取激活的目录项
            var active_item = $('.markdown-toc .nav li.active a');

            var currentScrollTop = $("html,body").scrollTop();

            if (currentScrollTop > lastScrollTop) { //向下滚动
                if(active_item.offset().top > $('.catalog-body').height() / 2) {
                    $('.catalog-body').animate({
                        scrollTop: $('.catalog-body').scrollTop() + 34
                    }, 500);
                }
            } else {  //向上滚动
                if(active_item.offset().top > $('.catalog-body').height() / 2) {
                    $('.catalog-body').animate({
                        scrollTop: $('.catalog-body').scrollTop() - 34
                    }, 500);
                }
            }
            lastScrollTop = currentScrollTop;
        });
    });

 

如果文章对您有帮助,欢迎点击下方按钮打赏作者

Comments

No comments yet.
To verify that you are human, please fill in "七"(required)