angular锚点和返回顶部功能设计。

angular锚点和返回顶部功能设计。

  1. 返回顶部代码
    typescrtipt代码
// 返回到顶部按钮
  @HostListener('window:scroll')
  checkScroll(): void{
    const scrollPosition = window.pageYOffset ||
      document.documentElement.scrollTop || document.body.scrollTop || 0

    if (scrollPosition >= 20) {
      this.isShowBackTop = true
    }else {
      this.isShowBackTop = false
    }
  }

  gotoTop(): void {
    window.scroll({
      top: 0,
      left: 0,
      behavior: 'smooth'
    })
  }

HTML只能部分截图了
在这里插入图片描述
sass部分截图
在这里插入图片描述
2. 锚点
注:锚点其实只是多了在HTML中使用模板变量来固定,当然还有其他方法。本教程使用模板变量。

首先在HTML中设置锚点的模板变量

在这里插入图片描述
在这里插入图片描述
然后在ts文件中使用@ViewChild获取模板变量,@HostListener监听页面滑动窗口的位置

@HostListener('window:scroll')
  checkPanel(): void {
    const scrollPosition = window.pageYOffset ||
      document.documentElement.scrollTop || document.body.scrollTop || 0
    if (scrollPosition < 400) {
        this.currentAnchor = 'selection1'
    }
    if(scrollPosition > 420){
      this.currentAnchor = 'selection2'
    }
  }
  @ViewChild('filter', { read: ElementRef}) filter!: ElementRef
  @ViewChild('minerView', { read: ElementRef}) minerView!: ElementRef
  currentAnchor = ''
  gotoFilter(): void{
    this.filter.nativeElement
      .scrollIntoView({behavior: 'smooth', block: 'start', inline: 'start'})
  }

  gotoMinerView(): void{
    this.minerView.nativeElement
      .scrollIntoView({behavior: 'smooth', block: 'start', inline: 'start'})
  }

控制面板:

mat-list用的是官网组件list,网址入下: https://material.angular.cn/components/list/overview

<div id="anchor-panel" class="mat-elevation-z4">
  <mat-list role="list">
    <mat-list-item role="listitem" (click)="gotoMinerView(); $event.stopPropagation()">
      <div class="anchor-wrap" >
        <div>矿工概览</div>
        <div class="dot-wrap" *ngIf="currentAnchor === 'selection1'">
          <div class="dot"></div>
        </div>
      </div>
    </mat-list-item>
    <mat-list-item role="listitem" (click)="gotoFilter(); $event.stopPropagation()">
      <div class="anchor-wrap">
        <div>扇区管理</div>
        <div class="dot-wrap" *ngIf="currentAnchor === 'selection2'">
          <div class="dot"></div>
        </div>
      </div>
    </mat-list-item>
  </mat-list>
</div>

sass代码:

// 锚点
#anchor-panel
  position: fixed
  top: 200px
  left: 20px
  padding: 6px
  .anchor-wrap
    cursor: pointer
    display: flex
    flex-direction: row-reverse
  .dot-wrap
    padding: 6px
    position: absolute
    left: 0
    .dot
      background-color: #3f51b5
      width: 6px
      height: 6px
      border-radius: 50%

效果展示:
在页面顶端情况
在这里插入图片描述
下滑页面之后
在这里插入图片描述

3.更多锚点设计可以借鉴
https://juejin.cn/post/6844904019958169608

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值