向下滚动Angular时显示导航栏

Posted

技术标签:

【中文标题】向下滚动Angular时显示导航栏【英文标题】:Show a navbar when scroll down Angular 【发布时间】:2021-09-05 05:58:55 【问题描述】:

我想在向下滚动时显示一个包含导航栏的 div。知道在页面上我嵌入了一个 power bi 报告 html

<div class="divNav " (scroll)="onWindowScroll($event)">
...
</div>
<div class="report">
  <iframe  [src]="this.linkReport" frameborder="0" allowFullScreen="true"></iframe>
</div>

css:

other class ...
    .scroll-down
    
      visibility: visible;
    

ts:

@HostListener('window:scroll', ['$event'])
  onWindowScroll(e) 
    let menu = document.querySelector(".divNav");
    let scrollDown = "scroll-down";
    window.addEventListener("scroll", () => 
      const currentScroll = window.pageYOffset;
      if (currentScroll > 100) 
        menu.classList.add(scrollDown);
        return;
      
    )

【问题讨论】:

.divNav 的 CSS 是什么样的? .divNav 对齐:左;位置:绝对;字体系列:Din; z指数:5; 【参考方案1】:

我认为 HostListener 已经是事件处理程序。 我认为目前您每次触发滚动事件时都添加一个事件监听器? 试试:

@HostListener('window:scroll', ['$event'])
  onWindowScroll($event) 
    const currentScroll = window.pageYOffset;
      if (currentScroll > 100) 
        let menu = document.querySelector(".divNav");
        menu.classList.add("scroll-down");
      
    )

【讨论】:

我更新了我的代码,就像你告诉我的那样。它不起作用 嗯有时 pageYOffset 不是你想要的。也许试试这个: const verticalOffset = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;看看:***.com/questions/41304968/… 我已经尝试过本次讨论中提出的解决方案,但没有奏效。我在 power bi 报告中滚动而不是正常页面这一事实没有影响? 嗯,如果您实际上是在 iframe 内滚动,我认为由于沙箱,它没有机会使其工作。但我只确定你不应该得到任何滚动事件?你有没有在 onWindowScroll 中 console.log ? 对不起,我的回答迟了。我已经被这个话题阻止了。在控制台中我收到了这样的消息:这个站点似乎使用了与滚动相关的定位效果。此效果可能不适用于异步滚动。有关更多详细信息或讨论相关工具和功能,请参阅developer.mozilla.org/docs/Mozilla/Performance/…。

以上是关于向下滚动Angular时显示导航栏的主要内容,如果未能解决你的问题,请参考以下文章

导航栏仅在 iOS 中向上滚动时显示

隐藏导航栏时显示状态栏

双向滚动时隐藏固定菜单

如何创建滚动后固定在顶部的粘性导航栏

如何在导航栏后面显示图像?

2017-04-10js来控制导航栏在滚动条拉到一定位置时显示