vue滑动吸顶及锚点定位的示例代码


Posted in Javascript onMay 10, 2020

在上篇文章给大家介绍了vue实现吸顶、锚点和滚动高亮按钮效果 感兴趣的朋友可以点击查看https://3water.com/article/172365.htm

今天给大家继续分享vue滑动吸顶及锚点定位的代码,具体内容如下所示:

Vue项目中需要实现滑动吸顶以及锚点定位功能。template代码如下:

<template>
<div class="main">
 <div id='menu'>
  <ul>
   <li v-for="item in tabList" @click='clickTab'></li>
  </ul>
 </div>
 <div id='div1'></div>
 <div id='div2'></div>
 <div id='div3'></div>
</div> 
</template>

(1)滑动吸顶:

监听scroll事件,获取页面的滚动距离,一旦滚动距离大于目标值,实现滑动吸顶功能。

public isFixed = false;
public mounted() {
 this.menuTop = (document.getElementById('menu') as any).offsetTop;
 window.addEventListener('scroll', this.handleScroll);
 }
public handleScroll() {
 const scrollTop = document.documentElement.scrollTop || document.body.scrollTop; // 获取滑动距离
 if (scrollTop < this.menuTop ) {
  this.isFixed = false;
 } else {
  this.isFixed = true; // 设置fixed定位
 }
 }
public destroyed() {
 window.removeEventListener('scroll', this.handleScroll);
}

(2)锚点定位。点击tab,设置页面滚动距离。

public clickTab(index: number) {
 this.activeIndex = index;
 this.isFixed = true;
 const menuHeight= (document.getElementById('menu') as any).offsetHeight;
 const div1= (document.getElementById('div1') as any).offsetTop;
 const div2= (document.getElementById('div2') as any).offsetTop;
 const div3= (document.getElementById('div3') as any).offsetTop;
 const div4= (document.getElementById('div4') as any).offsetTop;
 switch (index) {
  case 0: document.body.scrollTop = document.documentElement.scrollTop = div1 - menuHeight; break;
  case 1: document.body.scrollTop = document.documentElement.scrollTop = div2 - menuHeight; break;
  case 2: document.body.scrollTop = document.documentElement.scrollTop = div3 - menuHeight; break;
  case 3: document.body.scrollTop = document.documentElement.scrollTop = div4 - menuHeight; break;
  default: document.body.scrollTop = document.documentElement.scrollTop = div1- menuHeight;
 }
 }

总结

到此这篇关于vue滑动吸顶及锚点定位的示例代码的文章就介绍到这了,更多相关vue 滑动吸顶锚点定位内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
用jquery设置按钮的disabled属性的实现代码
Nov 28 Javascript
Js注册协议倒计时的小例子
Jun 24 Javascript
JavaScript中使用document.write向页面输出内容实例
Oct 16 Javascript
JavaScript的removeChild()函数用法详解
Dec 27 Javascript
深入理解jquery自定义动画animate()
May 24 Javascript
微信小程序 保留小数(toFixed)详细介绍
Nov 16 Javascript
js实现前端分页页码管理
Jan 06 Javascript
JavaScript中splice与slice的区别
May 09 Javascript
JS实现的3des+base64加密解密算法完整示例
May 18 Javascript
node.js使用免费的阿里云ip查询获取ip所在地【推荐】
Sep 03 Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
Apr 17 Javascript
Vuex模块化应用实践示例
Feb 03 Javascript
webpack+vue.js构建前端工程化的详细教程
May 10 #Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
May 10 #Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
May 10 #Javascript
angula中使用iframe点击后不执行变更检测的问题
May 10 #Javascript
JavaScript 装逼指南(js另类写法)
May 10 #Javascript
js中!和!!的区别与用法
May 09 #Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
May 09 #Javascript
You might like
PHP两种去掉数组重复值的方法比较
2014/06/19 PHP
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
PHP将进程作为守护进程的方法
2015/03/19 PHP
PHP中is_file()函数使用指南
2015/05/08 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
从零开始学习jQuery (二) 万能的选择器
2010/10/01 Javascript
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
详解vue-cli + webpack 多页面实例应用
2017/04/25 Javascript
javascript高仿热血传奇游戏实现代码
2018/02/22 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
2018/08/22 Javascript
Vue 中可以定义组件模版的几种方式
2019/08/06 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
Vue组件通信入门之Provide和Inject机制
2019/12/29 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
python实现爬虫下载漫画示例
2014/02/16 Python
Python常用随机数与随机字符串方法实例
2015/04/09 Python
星球大战与Python之间的那些事
2016/01/07 Python
Fabric 应用案例
2016/08/28 Python
浅谈numpy库的常用基本操作方法
2018/01/09 Python
Python tornado队列示例-一个并发web爬虫代码分享
2018/01/09 Python
python3 发送任意文件邮件的实例
2018/01/23 Python
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
2019/04/15 Python
Python实现把多维数组展开成DataFrame
2019/11/30 Python
Python定义一个Actor任务
2020/07/29 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
2020/10/29 Python
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
三八节标语
2014/06/27 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
坎儿井导游词
2015/02/09 职场文书
2019中秋节祝福语大全,提前收藏啦
2019/09/10 职场文书
详细介绍python操作RabbitMq
2022/04/12 Python