每个人的表达都不一样,可能我的标题并不能让大家了解到这文章想干嘛,所以就放一个图吧,我觉得有这个需求的应该看到这图都懂了的,再不清楚我想表达啥的话我只能说你是我前辈了,我是从我的零基础模式阐述了。

这就是一个页面的头部导航,每一个高亮代表对应相应的内容。

这个就是头部导航的div框架,这里做到的是当页面没有滚动过的时候,这部分是隐藏的,TopNavigation就是控制整个头部导航显示或隐藏的布尔值,这里要导航在显示的时候吸顶显示就要给定位position: fixed;样式。v-for就是遍历头部导航的四个元素啦,click就是给每个导航元素部分添加点击事件,当点击改元素时就跳转到对应的页面部分,:class就是使用了三元表达式给对应的导航元素高亮,:id就是每个元素后面都要用原生点击执行到,所以要给id。

这部分呢就是对应导航元素的相应页面了,看标签名就可以看出来啦,这里没有太多的东西,就是自己相应页面要渲染的数据,记得给id值就好,因为后面这也要有原生来获取对应的页面滚动高度。

这个就是data里的数据了,这些你不想被浏览器报红undefined就写一下吧。

这个图就是整个实现的重点了,可能会有点不清晰的逻辑,我尽量讲懂吧,毕竟我还是觉得我的表达不是那么的好呢。

首先1.位置呢就是一个监听页面的滚动时间,如果不敲这一行你下面就不用敲了,都没监听了,怎么实现功能。在2.位置呢就是上面说到的头部导航的一个显示隐藏的实现:意思就是当滚动上去的页面大小高度超过“1”的时候this.TopNavigation的布尔值就位真,头部导航显示;反之但当滚动上去的页面大小高度小于“2”的时候this.TopNavigation的布尔值就位假,头部导航隐藏。(这里肯定有人说1.几的时候呢,我只想说的鼠标滚动没有让我出现这种情况,的确会有,反正意思你理解了,非要搞完的话,你自己改到严谨吧,我总不能帮你写好开发的是吧。)先讲6.这部分吧,因为我当时实现的时候就是这样开发顺序的,按照逻辑顺序免得说错,这里就是点击头部导航元素的时候拿到它的id,赋值给到number,当number为0的时候window.scrollTo(0, 0);意思就是窗口滚到(0,0)位置,第一个0表示Y轴,第二个做自己猜。同理当number为1的时候window.scrollTo(0, 0);这里的第二个零就应该是对应<download id="one" :files="detail.files"></download>(看第三张图就知道这是啥了)这个的页面X轴坐标了,但是每次打开不痛后台接口返回的数据不一样,这个X轴的值肯定也不一样,所以

这部分就是用原生获取X轴的值,第一行意思就是找到id为“one”的document,第二行就是跳转到这个页面,其实这里已经实现跳转了,但由于我的头部导航用的定位占用了部分的可视窗口了,所以我为了效果更好,我还是拿到了对应的X轴scrollTop后减去119头部导航占用高度得到真正的scrollTops1再用window.scrollTo(0, this.scrollTops1);实现跳转页面,其实后面滚动到页面对应的导航元素高亮也要用到这个X轴的值,所以还是听我的话,跟着敲吧。后面的number为2为3的时候跟1的是一样的,不懂就照敲吧。

最后一个需求就是滚动页面时相应页面的对应导航元素高亮了,把眼睛放到4.处这里的if判断的条件是为了这一步在这只执行一次,如果你的页面进来之后的高度不会发生变化了的话就直接一个布尔值控制它就好,我这用两个只要是下面的页面有折叠页面,可以展开收起的,所以我这就写成这样,当页面发生变化的时候我就把this.showscrollTop改为真,再次滚动时就重新执行一次4.这步。4.处引用到了3.函数就是主动用原生全部点击一边头部导航获取到scrollTops1, 2, 3的值,从而用这三个值来执行5.的判断,所以这里敲代码的顺序是 2.4.5.。要是搞错了你就等报错吧。5.出就是用实时的scrollTop与scrollTops1, 2, 3比较,判断页面对应哪一部分的页面导航元素,从而给高亮模式。

这个是我后面做的优化,就是替代了2.4.5处的函数,主要是if和else的层级性有事后太难理解了,所以换了一下这个,具体意思如果看得懂上面下面应该也没为题的,就不细说了。

讲那么多,口水都干了,觉得有用的话就点个赞支持一下呗,要不我下次改成关注可读了沃

用原生自己编写一个头部导航实现索引功能相关推荐

  1. bootstrap 导航菜单 折叠位置_教大家如何编写一个网页导航条

    导航条简单地说就是对你整个网站模块的简单介绍,你可以直接点击导航条某一个按钮或板块便可进入其相应的界面,如:网页.新闻.贴吧等 .在企业网站上,导航条上常见的有:产品介绍,公司简介,最新产品,联系我们 ...

  2. C语言基础课 编写程序之1.编写一个判断素数的函数,并利用该函数输出100~200的所有素数2.编写一个函数fun(),函数功能是:判断一个整数是否既是5又是7的整倍数,若是,输出yes,不是,输出n

    1.编写一个判断素数的函数,并利用该函数输出100~200的所有素数 #include<stdio.h> #include<math.h> int fun(int n) {in ...

  3. 编写一个程序,实现下列功能

    编写一个程序,实现下列功能: 测试两个字符串String str1="It is"和String str2="It is"是否相等 将" a book ...

  4. 编写一个程序,实现以下功能:(1)输入一系列的学生数据(包括学生的学号、姓名和成绩等基本信息),将学生信息写入二进制文件 student . dat 中。。。。。。

    编写一个程序,实现以下功能: (1)输入一系列的学生数据(包括学生的学号.姓名和成绩等基本信息),将学生信息写入二进制文件 student . dat 中.(2)从 student . dat 文件中 ...

  5. C语言中fun的功能是将字符串,c语言程序设计请编写一个函数fun,它的功能是:将ss所指字符串中所.,c语言程序设计题 请编写一个函数fun,它的功能是:将ss所...

    计算机二级C语言上机南开100题--1 1: 第1题 m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中. ...

  6. JavaScript原生代码编写选项卡Tab页跳转功能

    本文主要介绍使用 JavaScript 原生代码编写选项卡Tab页的跳转功能. 一.先来看看效果图 二.准备文字素材 文字素材选择诗经里面的三首古诗,分别是关雎.蒹葭和采薇 <关雎> 关关 ...

  7. js原生代码编写一个鼠标在页面移动坐标的检测功能,兼容各大浏览器

    function mousePosition(e) {//IE9以上的浏览器获取 if (e.pageX || e.pageY) { return {x: e.pageX,y: e.pageY}; } ...

  8. C语言试题四十一之请编写一个函数,用来删除字符串中的所有空格。

    1. 题目 请编写一个函数function,它的功能是:用来删除字符串中的所有空格. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究生复试中C程序设计科目.帮助C语言学者打好程 ...

  9. C语言试题四十二之假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。

    1. 题目 请编写一个函数function,它的功能是:假定输入的字符串中只包含字母和*号,它的功能是:将字符串中的前导*号全部移到字符串的尾部. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语 ...

最新文章

  1. 集合啦,NLP数据增强技术!超全资源汇总
  2. Google正式发布TensorFlow Lite预览版,针对移动/嵌入设备的轻量级解决方案
  3. 单调递增最长子序列(南阳理工ACM)
  4. TikTok面临用户流失、苹果iOS14公测、无代码定义下一代软件等| Decode the Week
  5. 例子:好友列表选中效果
  6. 信息学奥赛一本通C++语言——1021: 打印字符
  7. AcWing 884. 高斯消元解异或线性方程组
  8. Uva 11491 暴力贪心
  9. idea控制台搜索功能
  10. phonegap 总结
  11. 破解极域电子教室密码
  12. laravel 判断字符串包含_Laravel:表单验证字符串长度的错误信息导致的异常
  13. 【经验分享】强力推荐——截图小工具Faststone Capture(FSC)
  14. 微信js-sdk+JAVA实现分享接口
  15. 论文引用:参考文献GB/T 7714、APA、MLA的自动生成
  16. Python笔记-类和实例、继承和多态
  17. 回想过去几年的编程生活
  18. K线形态识别—K线反转形态之头部反转形态
  19. 0504-android-云知声sdk使用
  20. 计算机左侧没有桌面菜单栏,我的电脑左侧工具栏忽然不见了

热门文章

  1. java窗口弹出的方法_制作弹出公告窗口
  2. 年年都有人说Java市场饱和,那Java行业到底是不是真的饱和了呢?
  3. tomcat修改端口后启动不了(还是以8080端口启动)
  4. 指针式仪表的自动读数与识别
  5. 2022年技术人365天写作手册-day03
  6. WiFi 6E与WiFi7技术特点
  7. python爬虫_爬取B站视频标题
  8. m无线通信的信道建模matlab仿真,仿真分析了6种不同的无线通信信道模型
  9. 关于下一代智能BMS的域控制器核心介绍
  10. centos6_grub故障修复