【问题标题】:How to make scroll to top button appear after scrolling in Angular在Angular中滚动后如何使滚动到顶部按钮出现
【发布时间】:2021-10-28 14:12:55
【问题描述】:

我已经从我的 Angular 项目中创建了一个滚动到顶部组件,我试图让我的滚动图像仅在用户向下滚动后出现,但我的按钮仍然出现在初始加载中,所以任何想法或建议我怎么能做到这一点

所以我想做的是,

  1. 页面加载时,不显示滚动图标
  2. 当用户向下滚动页面时,显示滚动图标

HTML

<div class="to-top" (click)="scrollToTop()" [ngClass]="{ 'show-scrollTop': windowScrolled }">
  <img src="../../../../assets/marketing-site/ecosystem/Scroll-to-Top.svg" alt="to-top-icon" />
</div>

CSS

.to-top {
  bottom: 0;
  cursor: pointer;
  margin: 0 8px 12px 0;
  position: fixed;
  right: 0;
}

.show-scrollTop {
  opacity: 1;
  transition: all 0.2s ease-in-out;
}

TS

  scrollToTop(): void {
    // scroll to the top of the body
    return this.document.body.scrollIntoView({
      behavior: 'smooth',
      block: 'start',
      inline: 'start',
    });
  }

这是我创建的示例,请查看

https://stackblitz.com/edit/angular-ivy-2d5jrt?file=src/app/app.component.html

【问题讨论】:

  • 我认为您在 .to-top 课程中缺少 opacity: 0
  • @TotallyNewb 我刚刚添加但仍出现在初始加载中。如果用户仅向下滚动,我只希望按钮立即出现。 :(

标签: html css angular typescript scroll


【解决方案1】:

你的表情

if (window.pageXOffset || document.documentElement.scrollTo || document.body.scrollTop > 20) {
      this.windowScrolled = true;
} 

总是正确的。你的意思可能是这样的

if( window.pageXOffset > 20 || document.body.scrollTop > 20) {}

document.documentElement.scrollTo 是一个函数,所以在我认为的条件下检查它是否存在是没有意义的。

【讨论】:

  • 嗨..刚刚添加但仍出现在初始加载中。如果用户仅向下滚动,我只希望按钮立即出现。 :(
  • 我认为您必须提供 stackblitz 或其他东西,因为我们无法根据代码提供更多建议。
  • 您好,我刚刚创建了 stackblitz,所以请您检查一下stackblitz.com/edit/angular-ivy-2d5jrt?file=src/app/…
  • opacity: 0; for the class .to-top is missing there.
【解决方案2】:

CSS

.to-top {
  bottom: 0;
  cursor: pointer;
  margin: 0 8px 12px 0;
  position: fixed;
  right: 0;
  opacity: 0;
}

.show-scrollTop {
  opacity: 1 !important;
  transition: all 0.2s ease-in-out;
}

TS

  windowScrolled = false;

  ngOnInit() {
    window.addEventListener('scroll', () => {
      this.windowScrolled = window.pageYOffset !== 0;
    });
  }

这应该可以完成工作。

另外,我更喜欢滚动:

  scrollToTop(): void {
    window.scrollTo(0, 0);
  }

【讨论】:

  • 您好,谢谢您,但出于某种原因,我的滚动图标甚至不再显示,知道吗?.. :(。这是我创建的 stackblitz 示例stackblitz.com/edit/angular-ivy-2d5jrt?file=src/app/…
  • 啊好吧..它工作。我的 CSS 课错了。这就是为什么。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2019-06-20
  • 2020-10-27
  • 2019-05-15
  • 1970-01-01
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多