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 文件本身编码转换 图文教程
Oct 12 Javascript
判断输入是否为空,获得输入类型的JS代码
Oct 30 Javascript
学习Javascript面向对象编程之封装
Feb 23 Javascript
一次围绕setTimeout的前端面试经验分享
Jun 15 Javascript
Vue2仿淘宝实现省市区三级联动
Apr 15 Javascript
如何用JavaScript实现功能齐全的单链表详解
Feb 11 Javascript
JQuery获取元素尺寸、位置及页面滚动事件应用示例
May 14 jQuery
jQuery实现动态加载(按需加载)javascript文件的方法分析
May 31 jQuery
解决Vue调用springboot接口403跨域问题
Sep 02 Javascript
viewer.js实现图片预览功能
Jun 24 Javascript
解决vue项目,npm run build后,报路径错的问题
Aug 13 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
Oct 27 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字符比较函数similar_text、strnatcmp与strcasecmp用法分析
2014/11/18 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
2014/12/16 PHP
yii使用activeFileField控件实现上传文件与图片的方法
2015/12/28 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
前台js调用后台方法示例
2013/12/02 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
2015/02/05 Javascript
JavaScript中的Math.atan2()方法使用详解
2015/06/15 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合
2016/08/11 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
[01:57]DOTA2上海特锦赛小组赛解说单车采访花絮
2016/02/27 DOTA
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
python基础教程之元组操作使用详解
2014/03/25 Python
python进阶教程之循环对象
2014/08/30 Python
浅谈python可视化包Bokeh
2018/02/07 Python
python pandas中DataFrame类型数据操作函数的方法
2018/04/08 Python
Python使用googletrans报错的解决方法
2018/09/25 Python
Python使用random.shuffle()打乱列表顺序的方法
2018/11/08 Python
Python设计模式之简单工厂模式实例详解
2019/01/22 Python
如何在mac环境中用python处理protobuf
2019/12/25 Python
HTML5的Geolocation地理位置定位API使用教程
2016/05/12 HTML / CSS
基于canvas的骨骼动画的示例代码
2018/06/12 HTML / CSS
Ruby如何实现动态方法调用
2012/11/18 面试题
拓展培训心得体会
2014/01/04 职场文书
安全资金保障制度
2014/01/23 职场文书
艺术节主持词
2014/04/02 职场文书
计划生育标语
2014/06/23 职场文书
推广活动策划方案
2014/08/23 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
面试分析分布式架构Redis热点key大Value解决方案
2022/03/13 Redis
安装harbor作为docker镜像仓库的问题
2022/06/14 Servers