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 相关文章推荐
Js 弹出框口并返回值的两种常用方法
Dec 30 Javascript
小试JQuery的AutoComplete插件
May 04 Javascript
javascript实现鼠标拖动改变层大小的方法
Apr 30 Javascript
浅谈jQuery中height与width
Jul 06 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
May 10 Javascript
vue实现ToDoList简单实例
Feb 07 Javascript
ES6实现的遍历目录函数示例
Apr 07 Javascript
使用async、enterproxy控制并发数量的方法详解
Jan 02 Javascript
mpvue全局引入sass文件的方法步骤
Mar 06 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
Jul 03 Javascript
详解Node.js使用token进行认证的简单示例
May 25 Javascript
小程序实现上传视频功能
Aug 18 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
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
PHP计算指定日期所在周的开始和结束日期的方法
2015/03/24 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
javascript setTimeout()传递函数参数(包括传递对象参数)
2010/04/07 Javascript
treepanel动态加载数据实现代码
2012/12/15 Javascript
node.js中的path.isAbsolute方法使用说明
2014/12/08 Javascript
javascript html5 canvas实现可拖动省份的中国地图
2016/03/11 Javascript
BootStrap中的表单大全
2016/09/07 Javascript
JavaScript 深层克隆对象详解及实例
2016/11/03 Javascript
jquery中each循环的简单回滚操作
2017/05/05 jQuery
在vue中使用jointjs的方法
2018/03/24 Javascript
jquery实现的简单轮播图功能【适合新手】
2018/08/17 jQuery
VUE中使用MUI方法
2019/02/12 Javascript
原生JS实现随机点名项目的实例代码
2019/04/30 Javascript
vue实现权限控制路由(vue-router 动态添加路由)
2019/11/04 Javascript
vue-axios同时请求多个接口 等所有接口全部加载完成再处理操作
2020/11/09 Javascript
[01:53]3.19 DOTA2发布会 现场精彩Coser表演
2014/03/25 DOTA
[01:34:42]NAVI vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
[56:42]VP vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
[49:15]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第二场 1月19日
2021/03/11 DOTA
python基于windows平台锁定键盘输入的方法
2015/03/05 Python
python自动裁剪图像代码分享
2017/11/25 Python
python+pyqt5编写md5生成器
2019/03/18 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
python list多级排序知识点总结
2019/10/23 Python
python类中super() 的使用解析
2019/12/19 Python
浅谈python之自动化运维(Paramiko)
2020/01/31 Python
解决pycharm不能自动保存在远程linux中的问题
2021/02/06 Python
英国乐购杂货:Tesco Groceries
2018/11/29 全球购物
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
车贷收入证明范本
2014/01/09 职场文书
考试退步检讨书
2014/01/15 职场文书
简单租房协议书
2014/04/09 职场文书
电子信息工程专业求职信
2014/06/28 职场文书
2014年帮扶工作总结
2014/11/26 职场文书