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 相关文章推荐
lib.utf.js
Aug 21 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
Oct 18 Javascript
jquery ajax的success回调函数中实现按钮置灰倒计时
Nov 19 Javascript
javascript根据时间生成m位随机数最大13位
Oct 30 Javascript
浅谈javascript回调函数
Dec 07 Javascript
javascript中获取class的简单实现
Jul 12 Javascript
JS中如何实现复选框全选功能
Dec 19 Javascript
Bootstrap的popover(弹出框)在append后弹不出(失效)
Feb 27 Javascript
Angular.js基础学习之初始化
Mar 10 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
Mar 15 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
Oct 15 Javascript
Javascript中window.name属性详解
Nov 19 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
关于svn冲突的解决方法
2013/06/21 PHP
Zend Framework入门应用实例详解
2016/12/11 PHP
自制PHP框架之设计模式
2017/05/07 PHP
PHP中OpenSSL加密问题整理
2017/12/14 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
JavaScript 拖拉缩放效果
2008/12/10 Javascript
JavaScript DOM 学习第九章 选取范围的介绍
2010/02/19 Javascript
JavaScript 学习初步 入门教程
2010/03/25 Javascript
JQuery调webservice实现邮箱验证(检测是否可用)
2013/05/21 Javascript
利用javascript实现web页面中指定区域打印
2013/10/30 Javascript
jQuery列表拖动排列具体实现
2013/11/04 Javascript
javasctipt如何显示几分钟前、几天前等
2014/04/30 Javascript
js实现点击图片改变页面背景图的方法
2015/02/28 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
解决JS无法调用Controller问题的方法
2015/12/31 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
2019/09/29 Javascript
vue-cli3访问public文件夹静态资源报错的解决方式
2020/09/02 Javascript
python原始套接字编程示例分享
2014/02/21 Python
简单讲解Python中的闭包
2015/08/11 Python
python记录程序运行时间的三种方法
2017/07/14 Python
Python之批量创建文件的实例讲解
2018/05/10 Python
tensorflow: 查看 tensor详细数值方法
2018/06/13 Python
Python全栈之列表数据类型详解
2019/10/01 Python
Python tkinter 下拉日历控件代码
2020/03/04 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
2020/09/23 Python
MUGLER官方网站:蒂埃里·穆勒香水
2019/11/26 全球购物
Java如何调用外部Exe程序
2015/07/04 面试题
初婚未育未抱养证明
2014/01/12 职场文书
中学教师管理制度
2014/01/14 职场文书
《小小雨点》教学反思
2014/02/18 职场文书
2014年青年志愿者工作总结
2014/12/09 职场文书
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电
一文搞懂Redis中String数据类型
2022/04/03 Redis
delete in子查询不走索引问题分析
2022/07/07 MySQL