vue实现导航标题栏随页面滚动渐隐渐显效果


Posted in Javascript onMarch 12, 2020

项目开发中导航栏随页面滚动渐隐渐显这一功能还是较为常用的,下面作一个用vue实现此功能的代码分享。

1. 为导航栏元素style属性用v-bind绑定data数据"opacityStyle"。

<div class="header" :style="opacityStyle">
 景点详情 //内容我就简约了,实际开发以需求为准
</div>

2. data中定义opacityStyle,数据内容是opacity透明度属性,设置为0。

data() {
 return {
 opacityStyle:{ opacity:0 }
 }
}

3. 监听scroll事件并执行相应方法,一般我习惯在activated生命周期时开始监听(activated是keepAlive属性下产生的一个生命周期,在进入页面时)。

activated(){
 window.addEventListener('scroll',this.handleScroll)
}

4. 设计handleScroll()方法。通过获取scroll滚动偏移值,指定数值对opacity属性进行计算,让透明度联动变化。

methods:{
 handleScroll(){
 const top = document.documentElement.scrollTop //获取scroll偏移值
 if(top > 45 && top <= 150){ //实际按需求取范围
  const opacity = top / 150 //对opacity作计算,透明度从起始到1随偏移值而改变
  this.opacityStyle = {opacity} //实时返回给opacityStyle
 }
 }
}

5. 对scroll监听进行解绑。刚刚在activated()中执行监听,同样的我们在deactivated()中移除监听。这一步很重要,很多人都会忽略,如果不解除将可能影响到其他页面的scroll行为,导致项目产生bug。

deactivated(){
 window.removeEventListener('scroll',this.handleScroll)
}

以上是vue实现页面滚动显隐导航栏功能的代码和逻辑,有疑惑例如keepAlive用法等不明白的地方可查看文档另外学习~

总结

到此这篇关于vue实现导航标题栏随页面滚动渐隐渐显效果的文章就介绍到这了,更多相关vue 导航标题栏滚动渐隐渐显内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
Firefox window.close()的使用注意事项
Apr 11 Javascript
ExtJS 2.0实用简明教程 之Border区域布局
Apr 29 Javascript
30个最好的jQuery 灯箱插件分享
Apr 25 Javascript
jquery.messager.js插件导致页面抖动的解决方法
Jul 14 Javascript
js中单引号与双引号冲突问题解决方法
Oct 04 Javascript
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
Nov 15 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
Dec 26 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
May 28 Javascript
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
Jan 09 Javascript
微信小程序 密码输入(源码下载)
Jun 27 Javascript
gulp教程_从入门到项目中快速上手使用方法
Sep 14 Javascript
JS实现放烟花效果
Mar 10 Javascript
three.js利用射线Raycaster进行碰撞检测
Mar 12 #Javascript
JS实现碰撞检测效果
Mar 12 #Javascript
使用JS实现动态时钟
Mar 12 #Javascript
Vue使用vue-draggable 插件在不同列表之间拖拽功能
Mar 12 #Javascript
js实现动态时钟
Mar 12 #Javascript
package.json各个属性说明详解
Mar 11 #Javascript
package.json中homepage属性的作用详解
Mar 11 #Javascript
You might like
PHP中的类-什么叫类
2006/11/20 PHP
php异常处理技术,顶级异常处理器
2012/06/13 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
2012/12/16 PHP
php计算整个目录大小的方法
2015/06/19 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
PHP PDOStatement::bindColumn讲解
2019/01/30 PHP
PHP实现限制域名访问的实现代码(本地验证)
2020/09/13 PHP
TNC vs BOOM BO3 第三场2.13
2021/03/10 DOTA
JSON JQUERY模板实现说明
2010/07/03 Javascript
基于jquery的一行代码轻松实现拖动效果
2010/12/28 Javascript
JavaScript实现统计文本框Textarea字数增强用户体验
2012/12/21 Javascript
使用js的replace()方法查找字符示例代码
2013/10/28 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
JS的数组迭代方法
2015/02/05 Javascript
使用EVAL处理jqchart jquery 折线图返回数据无效的解决办法
2015/11/26 Javascript
jQuery实现的无限级下拉菜单功能示例
2016/09/12 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
JQueryEasyUI框架下的combobox的取值和绑定的方法
2017/01/22 Javascript
解决JS外部文件中文注释出现乱码问题
2017/07/09 Javascript
webpack 模块热替换原理
2018/04/09 Javascript
Node.js系列之连接DB的方法(3)
2019/08/30 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
2019/10/25 Javascript
VueQuillEditor富文本上传图片(非base64)
2020/06/03 Javascript
[03:39]DOTA2英雄梦之声_第05期_幽鬼
2014/06/23 DOTA
对比Python中__getattr__和 __getattribute__获取属性的用法
2016/06/21 Python
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
Python对列表中的各项进行关联详解
2017/08/15 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
python如何实现DES加密
2020/09/21 Python
自动化专业个人求职信范文
2013/12/30 职场文书
计生工作先进事迹
2014/08/15 职场文书
2015年医院药剂科工作总结
2015/05/04 职场文书
如何在C++中调用Python
2021/05/21 Python
微信小程序实现聊天室功能
2021/06/14 Javascript
mysql连接查询中and与where的区别浅析
2021/07/01 MySQL
Netty分布式客户端接入流程初始化源码分析
2022/03/25 Java/Android