当前位置: 首页 > article >正文

前端实现标题滚动点击导航

效果图

在这里插入图片描述
在这里插入图片描述

右边滚动的html代码

<div class="right-box">
    <el-tabs v-model="isScrollNow" tab-position="right" class="updateTab" @tab-click="scrollTo"
        style="height: fit-content;">
        <el-tab-pane label="单位基本信息" name="0"></el-tab-pane>
        <el-tab-pane label="产品基本信息" name="1"></el-tab-pane>
        <el-tab-pane label="版本信息" name="2"></el-tab-pane>
        <el-tab-pane v-if="dialogType === 'views'" label="操作日志" name="3"></el-tab-pane>
    </el-tabs>
</div>

在mounted中要监听页面滚动

window.removeEventListener('scroll', this.onScroll, false)

要给父盒子去一个名称content_wrapper,然后在每一个标题盒子要roll_box类名
在这里插入图片描述

滚动的方法
isScrollNows是导航栏绑定的值

onScroll() {
            // 为每个标题都要有这个class名
            const navContents = document.querySelectorAll('.roll_box')
            const offsetTopArr = []
            navContents.forEach((item) => {
                offsetTopArr.push(item.offsetTop)
            })
            const scrollTop = this.$refs.content_wrapper.scrollTop
            // 滚动的位置
            let navIndex = 0
            for (let n = 0; n < offsetTopArr.length; n++) {
                if (scrollTop * 1 >= offsetTopArr[n] * 1) {
                    navIndex = n
                    this.isScrollNow = String(navIndex)
                    // 滑动底部选中最后一个选项
                    // if (
                    //     document.documentElement.scrollHeight
                    //     - scrollTop
                    //     <= document.documentElement.clientHeight + 50
                    // ) {
                    //     this.isScrollNow = String(offsetTopArr.length - 1)
                    // }
                }
            }
        },

点击导航栏滚动滚动条滚动到相应的位置

scrollTo(tab) {
            document.getElementsByClassName('roll_box')[tab.index] && document.getElementsByClassName('roll_box')[tab.index].scrollIntoView({
            behavior: 'smooth',
            block: 'start',
            })
        },

http://www.kler.cn/a/228486.html

相关文章:

  • PyQt5 超详细入门级教程上篇
  • 【RAG落地利器】向量数据库Chroma入门教程
  • golang接口
  • Excel 实现文本拼接方法
  • Linux TCP 之 RTT 采集与 RTO 计算
  • Python运算符
  • 爬虫工作量由小到大的思维转变---<第四十五章 Scrapyd 关于gerapy遇到问题>
  • 100个Cocos实例(32/100) 3D模型受击闪白效果简易实现
  • 全网第一篇把Nacos配置中心客户端讲明白的
  • J组一等奖冲刺:原码、反码与补码
  • centos7安装google chrome和chromium
  • SPECCPU2017操作说明
  • MyBatisPlus的链式查询LambdaQueryChainWrapper
  • python常用pandas函数nlargest / nsmallest及其手动实现
  • 【MySQL】DQL的总结和案例学习
  • 开源节点框架STNodeEditor使用
  • 【数字电子技术课程设计】多功能数字电子钟的设计
  • python-题库篇-数学
  • 【QT+QGIS跨平台编译】之二十六:【SpatialIndex+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • Java技术栈 —— Hive与HBase
  • 言语必备实词成语——成语(二)
  • 【LeetCode】刷题总结 - 15. 三数之和
  • linux编译ffmpeg动态库
  • figure方法详解之清除图形内容
  • k8s版本升级到1.24.x
  • SpringBoot注解--02---常用注解汇总