javascript - 检查 scrollIntoView 是否完成

标签 javascript angular typescript

我在 Angular 的单页应用程序中使用以下函数。当我点击菜单项时,我滚动到相关的 div。

scroll (el) {
    this.sharedService.isClicked.next(true);
    el.scrollIntoView({ behavior: 'smooth', block: 'start' });
}

如何检查元素是否完成滚动?我想避免使用 setTimeout 函数。

最佳答案

希望这对您有帮助..

  var scrollIntoviewCompleted = false;
  var currentVisible = false;
  var onceVisible = false;
  $(window).scroll(function(){
     $.fn.isOnScreen = function(){
        var element = this.get(0);
        var bounds = element.getBoundingClientRect();
        return bounds.top < window.innerHeight && bounds.bottom > 0;
    }
        if ($('.targetdiv').isOnScreen()) {
            currentVisible = true;
            onceVisible =true;
        } 
        else
        {
            currentVisible = false;
        }
        if(onceVisible == true && currentVisible == false){
            scrollIntoviewCompleted = true;
            console.log("scrollIntoViewCompleted");
        }

});

关于javascript - 检查 scrollIntoView 是否完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52847415/

相关文章:

javascript - 日期时间范围查询

javascript - angularjs中的 Controller 功能?

angular - 如何在 Angular 模板中显示值为 0 的 promise/observable?

javascript - 在 TypeScript 中使用分布在多个模块文件中的命名空间

javascript - 如何计算对象属性值并在动态按钮中显示单独的值并将单击事件分配给它们

javascript - 如何将 "reset"重写的 Prototype 方法恢复到其原始行为

javascript - 成功将图像上传到 firebase 存储后,Firebase 获取下载 URL

Angular PrimeNG p 表 : add custom sorting function to specific column

angular - 如何在angular 5的ngOnInit上调用NgbCarousel的pause()函数

javascript - 从 Node_Modules(带有 TypeScript 的 .Net Core 项目) bundle/复制 Javascript 库