VUE 实现滚动监听 导航栏置顶的方法


Posted in Javascript onSeptember 11, 2018

HTML

非重点的代码,比如样式啥的,我就不放上来了,一笔带过

简略的写一下html代码,可以对照文章最后的效果图看,应该不难理解

<div :style="{ paddingBottom: paddingBottom}">

 <header>资源信息</header>

 <div>
  <!-- 公司信息 浏览量 -->
 </div>

 <div id="fixedBar" :class="{ fixedBar: isFixed }">
  <!-- 品名 -->
  <!-- 规格 -->
  <!-- 产地 -->
  <!-- 单价 -->
 </div>

 <div :style="{ marginTop: marginTop }">
  <!-- 数据列表 -->
 </div>

 <footer class="footer">
  <button>订阅</button>
  <button>关闭</button>
  <div v-show="advertShow">
   <a @click="del">×</a>
   <img src="./广告.jpg" />
  </div>
 </footer>

</div>

<style>
 .fixedBar {
  position: fixed;
  top: 0;
  z-index: 999;
  width: 100%;
 }
</style>

VUE

1. data ()

data () {
 paddingBottom: '1.5rem', // 给最外层div一个padding-bottom
 // 因为footer是fixed定位 如果padding-bottom为0 数据列表拉到最下面的时候 会有部分数据被footer挡住

 isFixed: false, // bar浮动
 offsetTop: 0, // 触发bar浮动的阈值
 marginTop: 0, // 触发bar浮动的同时 给数据列表一个margin-top 防止列表突然上移 会很突兀

 advertShow: true, // 广告显示
}

2. mounted ()

mounted () {
 // 设置初始的 padding-bottom 值为 footer 的高度 +20 防止数据列表拉到最下面被footer挡住 +多少自定
 this.paddingBottom = document.querySelector('.footer').offsetHeight + 20 + 'px';

 // 设置bar浮动阈值为 #fixedBar 至页面顶部的距离
 this.offsetTop = document.querySelector('#fixedBar').offsetTop;

 // 开启滚动监听
 window.addEventListener('scroll', this.handleScroll);
}

3. methods

methods: {
 // 关闭广告
 del () {
  this.advertShow = true;
  this.$nextTick(() => {
   this.paddingBottom = document.querySelector('.footer').offsetHeight + 20 + 'px';
  });
 },

 // 滚动监听 滚动触发的效果写在这里
 handleScroll () {
  var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;

  if (scrollTop >= this.offsetTop) {
   this.isFixed = true;
   this.marginTop = document.querySelector('#fixedBar').offsetHeight + 'px';
  } else {
   this.isFixed = false;
   this.marginTop = 0;
  }
 }
}

4. destroyed ()

destroyed () {
 window.removeEventListener('scroll', this.handleScroll); // 离开页面 关闭监听 不然会报错
}

效果图

VUE 实现滚动监听 导航栏置顶的方法

VUE 实现滚动监听 导航栏置顶的方法

VUE 实现滚动监听 导航栏置顶的方法

VUE 实现滚动监听 导航栏置顶的方法

以上这篇VUE 实现滚动监听 导航栏置顶的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery.extend 函数的详细用法
Jun 27 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
Nov 13 Javascript
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
Jan 24 Javascript
调试Javascript代码(浏览器F12及VS中debugger关键字)
Jan 25 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
Sep 12 Javascript
2种jQuery 实现刮刮卡效果
Feb 01 Javascript
jquery实现全选、不选、反选的两种方法
Sep 06 Javascript
深入理解Vue.js轻量高效的前端组件化方案
Dec 10 Javascript
使用apifm-wxapi模块中的问题及解决方法
Aug 05 Javascript
详解微信小程序开发之formId使用(模板消息)
Aug 27 Javascript
js实现百度登录窗口拖拽效果
Mar 19 Javascript
Vue Elenent实现表格相同数据列合并
Nov 30 Vue.js
vue中的watch监听数据变化及watch中各属性的详解
Sep 11 #Javascript
vue axios数据请求get、post方法及实例详解
Sep 11 #Javascript
js监听html页面的上下滚动事件方法
Sep 11 #Javascript
vue 使用html2canvas将DOM转化为图片的方法
Sep 11 #Javascript
Vue项目数据动态过滤实践及实现思路
Sep 11 #Javascript
使用vue.js在页面内组件监听scroll事件的方法
Sep 11 #Javascript
vue+axios+element ui 实现全局loading加载示例
Sep 11 #Javascript
You might like
一个PHP操作Access类(PHP+ODBC+Access)
2007/01/02 PHP
用PHP实现的生成静态HTML速度快类库
2007/03/31 PHP
PHP生成excel时单元格内换行问题的解决方法
2010/08/26 PHP
PHP Undefined index报错的修复方法
2011/07/17 PHP
php获取数组元素中头一个数组元素值的实现方法
2014/12/20 PHP
php实现比较全的数据库操作类
2015/06/18 PHP
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
jQuery 表单验证扩展代码(二)
2010/10/20 Javascript
jQuery scroll事件实现监控滚动条分页示例
2014/04/04 Javascript
Javascript实现苹果悬浮虚拟按钮
2016/04/10 Javascript
学习Node.js模块机制
2016/10/17 Javascript
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
微信小程序顶部导航栏可滑动并选中放大
2019/12/05 Javascript
d3.js实现图形缩放平移
2019/12/19 Javascript
微信小程序实现二维码签到考勤系统
2020/01/16 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
python中的代码编码格式转换问题
2015/06/10 Python
Python随机数random模块使用指南
2016/09/09 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
钉钉群自定义机器人消息Python封装的实例
2019/02/20 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
洲际酒店集团大中华区:IHG中国
2016/08/17 全球购物
资生堂美国官网:Shiseido美国
2016/09/02 全球购物
DIY蛋糕店的创业计划书范文
2013/12/26 职场文书
2014年上半年工作自我评价
2014/01/18 职场文书
办公自动化毕业生求职信
2014/03/09 职场文书
邮政竞聘演讲稿
2014/09/03 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
介绍信如何写
2015/01/31 职场文书
清洁工个人工作总结
2015/03/05 职场文书
初一数学教学反思
2016/02/17 职场文书
2016年“我们的节日·中秋节”活动总结
2016/04/05 职场文书
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA
springboot入门 之profile设置方式
2022/04/04 Java/Android
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python