vue项目中详情页向下滚动,导航选中;点击导航,详情页跳到指定区域

news2025/1/10 12:51:46

 

 

需求1:滚轮向下滚动的时候,导航选中 

需求2:点击导航的时候,会跳转到目标区域

在生命周期中获取屏幕的高度

mounted() {
    //获取屏幕高度
    console.log(document.documentElement.clientHeight);//667
  },

这里就考虑到项目优化防抖与节流 这是我总结的防抖与节流CSDNhttps://mp.csdn.net/mp_blog/creation/editor/121282054

methods:{
    scrollDetailPage(){
        //滚动详情页,滚轮的位置
         console.log(doucument.doucumentElement.srollTop)
    }
}
mounted(){
    //实时监测到滚轮的变化       第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的。
    doucument.addEventListener("scroll",this.scorllDatailPage,false)
}

这里就要考虑性能优化了

瞬间的操作都会导致这些事件会被高频触发。 如果事件的回调函数较为复杂,就会导致响应跟不上触发,出现页面卡顿,假死现象

下载防抖的插件 

npm i --save lodash.debounce

 vue中引入

var debounce = require('lodash.debounce');

使用防抖插件  防抖插件,其实是一个函数,直接套到函数外面即可

//使用插件
scrollDetailPage:debounce(function(){
    console.log(doucment.doucmentElement.scrollTop)
},1000)

ok,咱们已经使用了插件

scorllDatailPage:debounce(function(){
    //获取导航高度
    //console.log(this.$refs.header.offsetHeight)
    let headerHeight=this.$refs.header.offsetHeight;    
    //滚轮位置,滚轮滚上去了多少
    let oTop=document.doucumentElement.scrollTop;
    //这个地方就非常有意思了,当滚轮滚上去大于200的时候,除以200,就大于1,同时把元素的透明度设为1,让元素显示,当滚轮不大于200时,透明度是慢慢增加,就会有一个渐变的效果
    let opacity=oTop/100 
    if(opacity>=1){
        this.bgOpacity=1
    }else{
        this.bgOpacity=opacity
    }
    //获取每一个大块的自身的高度
    //console.log(doucment.getElementById("wrap_0").offsetHeight);
    //设置一个数组存放高度
    let wrapHeight=[];
    wrapHeight.push(doucument.getElementById("wrap_0"));
    wrapHeight.push(doucument.getElementById("wrap_1"));
    wrapHeight.push(doucument.getElementById("wrap_2"));
    wrapHeight.push(doucument.getElementById("wrap_3"));
    //console.log(window.scrollY)
    let {scrollY}=window;//解构赋值,window的scrollY对象,卷进去的高度
    //reduce遍历数组
    wrapHeight.reduce((prev,value,index)=>{
        if(!document.getElement("wrap_0")&&!document.getElement("wrap_1")
            &&!document.getElement("wrap_2")&&!document.getElement("wrap_3")){
            return;
        }
        if(prev){
            return prev
        }
        if(scrollY+headerHight<=value.offsetHeight+value.offsetTop)
    })
    
},500)

复习一下reduce遍历数组 

 let arr=[11,22,33,44]
        let sum=arr.reduce((prev,current,index,arr)=>{
            console.log(prev);//第二个参数
            console.log(current);//value
            console.log(index);//index
            console.log(arr);//arr
            return prev+current//prev相当于可以设个起始值,然后数组value循环累加
        },0)
        console.log(sum);

导航一开始是没有出现的透明度为0,当滑到了一定的距离, 导航出现

//设置导航的背景颜色                   
<div 
    class="detail-header" 
    ref="header" 
    :style="'background:rgba(255,255,255,'+bgOpacity)"// 绑定数据,进行拼串
><div>

//导航中间的内容
<div 
    class="detail-tabs" 
    :style="'opacity:'+bgOpacity"//设置透明度
></div>

//在data中定义一个变量
data(){
    return{
        bgOpacity:0,
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/582621.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年上半年软件设计师考试中级真题答案+解析(详细版)

目录 背景过程计算机组成原理产权保护结构化开发方法 总结 背景 2023年软考讲解 软考&#xff08;软件技术人员职业资格考试&#xff09;是中国的一项职业资格考试&#xff0c;主要针对软件行业从业人员。软考的主要目标是评估考生在软件开发、软件测试、软件项目管理等方面的…

音乐小白乐器选择,如何学一手才艺,推荐尤克里里

乐器难度说明 注意&#xff1a;这里的难度说明是音准的难度&#xff0c;就是能不能发出标准的声音 乐器按照演奏方式分类&#xff0c;分为 演奏方式乐器举例难度等级难度说明敲击木鱼&#xff0c;架子鼓&#xff0c;钢琴1敲击乐是音最准的&#xff0c;敲哪个地方就发什么音&…

MongoDB学习笔记三

目录 1.数据库增删 1.1数据库创建 1.2数据库删除 2.集合增删 2.1创建集合 2.2删除集合 3.文档增删改查 3.1查询文档 3.2创建文档 3.3删除文档 3.4更新/修改文档 1.数据库增删 1.1数据库创建 数据库创建语法格式&#xff1a; use DatabaseName 在mongodb中使用use与在m…

油猴配置教程

文章目录 目录 文章目录 前言 一. 安装油猴 二、使用步骤 三.安装插件 (ChatGPT) 四. 脚本推荐 前言 作者简介: zuiacsn 座右铭: 抱怨身处黑暗,不如提灯前行 内容介绍: 油猴 油猴&#xff08;Tampermonkey&#xff09;指的是一个流行的用户脚本管理器&#xff0c;它能使…

智能照明“暗潮涌动”

在技术持续升级、消费者观念发生转变等多方因素的共同影响下&#xff0c;与智能相关的设备销量逐渐走俏。能够为人们带来便捷、舒适的智能家居产品也逐渐走进千家万户&#xff0c;深入到人们的日常生活中。在此背景下&#xff0c;智能家居行业日渐火热&#xff0c;实现了飞速发…

SLMi331数明深力科带DESAT保护功能隔离驱动应用笔记

SLMi33X系列SLMi331数明深力科首款单通道带DESAT保护功能的IGBT/SiC隔离驱动器。内置快速去饱和(DESAT) 故障检测功能、米勒钳位功能、漏极开路故障反馈、软关断功能以及可选择的自恢复模式&#xff0c;兼容光耦隔离驱动器。 SLMi331的DESAT阈值为6.5V&#xff0c;其最大驱动电…

Facebook广告投放和海外品牌推广(KOL)哪个未来发展好一点?

在当今数字化时代&#xff0c;品牌推广和营销策略正不断演变和创新。在海外市场拓展和品牌推广方面&#xff0c;Facebook广告投放和海外品牌推广&#xff08;KOL&#xff09;已经成为两种备受关注的策略。 1.Facebook广告投放的优势&#xff1a; 广告定位精准&#xff1a;Faceb…

究诸经典,探寻大模型演变之踪迹

编者按&#xff1a;在仅仅五年的时间里&#xff0c;大语言模型、transformers几乎完全改变了自然语言处理领域。 为了便于快速、扎实、深入地学习大语言模型&#xff0c;本文整理一个简单的经典学术资料列表&#xff0c;供正在入门中的机器学习研究人员和开发者参考。 以下是译…

JAVA基础---集合

一、树结构 二叉树、二叉查找树、平衡二叉树、红黑树 1、数据结构遍历方式 1、前序遍历&#xff1a;当前节点、左子节点、右子节点 2、中序遍历&#xff1a;左子节点、当前节点、右子节点 3、后序遍历&#xff1a;左子节点、右子节点、当前节点 4、层序遍历&#xff1a;一层…

几个提高工作效率的 Python 自动化脚本,收藏!

在这个自动化时代&#xff0c;我们有很多重复无聊的工作要做。 想想这些你不再需要一次又一次地做的无聊的事情&#xff0c;让它自动化&#xff0c;让你的生活更轻松。 那么在本文中&#xff0c;我将向您介绍 10 个 Python 自动化脚本&#xff0c;以使你的工作更加自动化&#…

javaWeb ssh小提琴管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh小提琴管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S 模式开发。开发环境为TOMCAT7.0,…

TypeScript实现贪吃蛇游戏

TS实现贪吃蛇游戏 文章目录 TS实现贪吃蛇游戏[toc]1.项目效果2.项目梳理3.项目准备4.主体页面结构5.CSS样式6.TS逻辑6.1 食物逻辑6.2 蛇逻辑6.3 记分板逻辑6.4 游戏控制器逻辑6.5 程序入口ts 1.项目效果 项目体验 2.项目梳理 这个小游戏主要包括积分面板&#xff0c;食物&…

2023上半年软件设计师真题评析

2023年上半年软设是2018年改版后的一次考试&#xff0c;以下内容根据考完回忆结合网上暂时流传的真题(不保证完全正确)整理&#xff0c;主要侧重相关知识点罗列&#xff0c;少讲或不讲具体的答案&#xff0c;主要给自己的计算机基础查漏补缺&#xff0c;同时也希望对大家有帮助…

基于AI技术的APP外包开发流程

AI技术发展非常迅速&#xff0c;最近一年有了巨大的技术突破&#xff0c;一些专家认为可以基于现在的AI技术将APP再重做一遍&#xff0c;这无疑将给创业者带来巨大机会。今天和大家分享使用AI重做一个APP的步骤和注意事项&#xff0c;希望对大家有所帮助。 需要遵循以下步骤和注…

5601-RIO-MCM 消除Modbus网络上的通信错误

当端口配置为从端口时&#xff0c;此参数指定内部用作Holding的零地址或起点的数据库地址 寄存器&#xff08;16位整数&#xff09;数据。Modbus功能读取保持寄存器数据代码3命令&#xff08;读取保持寄存器&#xff09;和由功能代码6写入&#xff08;预设单寄存器&#xff09;…

《论文阅读》在跨语料库上利用集成提示完成零样本的文本情感分类 COLING2022

《论文阅读》在跨语料库上利用集成提示完成零样本的文本情感分类 COLING2022 前言相关知识hubness problem零样本学习灵感来源验证点零样本情感分类的自然语言推理情感提示情感集成自我总结问题前言 你是否也对于理解论文存在困惑? 你是否也像我之前搜索论文解读,得到只是中…

【自然语言处理】- 作业6: 面向新冠肺炎的社会计算应用

课程链接: 清华大学驭风计划 代码仓库&#xff1a;Victor94-king/MachineLearning: MachineLearning basic introduction (github.com) 驭风计划是由清华大学老师教授的&#xff0c;其分为四门课&#xff0c;包括: 机器学习(张敏教授) &#xff0c; 深度学习(胡晓林教授), 计算…

Mybatis-X插件自动生成代码的使用详解(小白专用)

Mybatis-X插件自动生成代码的使用详解&#xff08;小白专用&#xff09; 1、 使用idea链接数据库 详见使用idea链接数据库并生成实体类 idea链接数据库之后也提供了一个生成实体类的方法&#xff0c;见↑ 2、安装mybatis-X插件 File–>Settings–>Plugins–>Marke…

c++11基础

文章目录&#xff1a; c11简介统一的列表初始化{}初始化std::initializer_list 声明autodecltypenullptr 范围for循环STL中的一些变化arrayforward_listunordered_map和unordered_set 字符串转换函数 c11简介 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1)&#xff0…

【JavaScript数据结构与算法】数组类(电话号码的字符组合)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端&#xff08;Node.js&#xff09; &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿多个前端 offer&#xff08;…