| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> P206 -P209 标题和内容的联动效果 -> 正文阅读 |
|
[JavaScript知识库]P206 -P209 标题和内容的联动效果 |
一:点击标题,滚动到对应的主题 1.1 DetailNavBar.vue 1.2 Detail.vue 1.3 Detail.vue 想出一种解决方案 ?然后themeTopYs不能写死,themeTopYs[index]相当于动态获取每个的offsetTop,那么怎么获取呢,在create()里明显不行,在mounted()里有可能图片还没加载过来就获取的高度不准确。 放在updata()里 ? ?这样还是不太好,因为一开始还没渲染出来,获取不到位置 可以放在creat()里面,在前面加上回调函数 nextTick(),这样可以使 this.paramInfo = new GoodsParam(data.itemParams.info, data.itemParams.rule) 这个赋值了且渲染了,然后执行offsetTop ? ?但是此时是因为我们之前大打开网页将图片缓存了,所以这个值是对的。实际上,根据最新的数据,对应的DOM是已经被渲染出来 但是图片依然是没有加载完(目前获取到的offsetTop不包含其中的图片) ?改进 总结: 1、在detail中监听标题的点击,获取index 2、滚动到对应的主题: ? ? *? 获取所有主题的offsetTop ? ? * 问题:在哪里才能获取到正确的offsetTop ? ?1.created肯定肯定不行,压根不能获取元素 ? ?2.mounted也不行,数据还没有获取到 ? 3.获取到数据的回调中也不行,DOM还没有渲染完 ? 4. $nextTick也不行,因为图片的高度没有被计算在内 ? 5.在图片加载完成后,获取的高度才是正确的 二、内容滚动,显示正确的标题 2.1? Detail.vue? 将Scroll里滚动监听事件发出 ? ?普通做法: (this.currentIndex !== i && ((i < length - 1 && positionY >= this.themeTopYs[i] && positionY < this.themeTopYs[i + 1]) || (i === length - 1 && positionY > this.themeTopYs[i]))) ?条件成立:this.currentIndex = i; 条件一:防止赋值的过程过于频繁 条件二: ((i < length - 1 && positionY >= this.themeTopYs[i] && positionY < this.themeTopYs[i + 1]) || (i === length - 1 && positionY > this.themeTopYs[i])) 条件1:(i < length - 1 && positionY >= this.themeTopYs[i] && positionY < this.themeTopYs[i + 1]) * 判断区间:在0和某个数字之间(i < length - 1) 条件2: (i === length - 1 && positionY > this.themeTopYs[i]) * 判断大于等于:i === length - 1 优化做法: 1. 在themeTopYs最后加一个最大值 this.themeTopYs.push(Number.MAX_VALUE); 2. 只遍历前length-1个 for (let i = 0; i < length-1; i++) { if(this.currentIndex!==i&&( positionY >= this.themeTopYs[i] && positionY < this.themeTopYs[i + 1])){ this.currentIndex = i; this.$refs.nav.currentIndex=this.currentIndex } } |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 13:20:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |