javascript - 滚动时 Angular 5 粘性菜单

标签 javascript html css angular typescript

当菜单到达页面顶部时,我会将菜单位置更改为固定。以下是我的处理方式。

import { Component, OnInit, Inject, HostListener } from '@angular/core';
import {Location} from '@angular/common';
import { DOCUMENT } from "@angular/platform-browser";
....
export class DashboardComponent implements OnInit {
  constructor(private _location: Location, @Inject(DOCUMENT) private doc: Document) { }
  public fixed: boolean = false; 
  @HostListener("window:scroll", [])
  onWindowScroll() {
    let num = this.doc.body.scrollTop;
    console.log("scroll top" , this.doc.body.scrollTop)
    if ( num > 50 ) {
        this.fixed = true;
    }else if (this.fixed && num < 5) {
        this.fixed = false;
    }
  }

HTML

<div [class.menus]="fixed">
  <div class="left-menu ">
    <app-left-menu></app-left-menu>
  </div>
  <div class="second-menu" >
    <app-second-menu (display)="onDisplay($event)" [expanded]=expanded ></app-second-menu>
  </div>
</div>

CSS

.menus{
  position: fixed;
}

问题scrollTop 没有改变。当我执行 console.log(this.doc.body.scrollTop) 并滚动时,值为 0 并且不会更改。

最佳答案

很可能主体不是滚动容器,HTML 元素是

试试 document.documentElement.scrollTop

在浏览器中,document.documentElement 是对根 HTML 元素的引用

关于javascript - 滚动时 Angular 5 粘性菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50563797/

相关文章:

javascript - js函数在条件满足时不返回

带有空标签的 JavaScript src 可以工作,带有空结尾则不行

javascript - 当上一行具有行跨度时,将行添加到所选行下方的 html 表格中

javascript - 如何在javascript中显示选定的元素

php - 如何一次编辑数据库中的多个值

css - 自动高度 md 按钮

css - 在 LESS 中构建可变混合

javascript - AngularJS ui-mask 添加货币的最大值和最小值

javascript - Node JS + DIME - 在 POST 中发送二进制数据

javascript - 有没有办法防止使用 css 或 js 发生 img get 请求?