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 相关文章推荐
javascript 内存回收机制理解
Jan 17 Javascript
屏蔽网页右键复制和ctrl+c复制的js代码
Jan 04 Javascript
JQuery-tableDnD 拖拽的基本使用介绍
Jul 04 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
Jun 06 Javascript
js面向对象之静态方法和静态属性实例分析
Jan 10 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
Aug 05 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
Oct 11 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
Jan 13 Javascript
axios取消请求的实践记录分享
Sep 26 Javascript
JavaScript ES2019中的8个新特性详解
Feb 20 Javascript
vue-router两种模式区别及使用注意事项详解
Aug 01 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
Jun 02 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 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
php获取微信openid方法总结
2019/10/10 PHP
PHP如何防止用户重复提交表单
2020/12/09 PHP
js window.event对象详尽解析
2009/02/17 Javascript
从零开始学习jQuery (二) 万能的选择器
2010/10/01 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
Jquery自定义button按钮的几种方法
2014/06/11 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
jQuery实现元素拖拽并cookie保存顺序的方法
2016/02/20 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
2016/05/24 Javascript
实例解析jQuery中proxy()函数的用法
2016/05/24 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
layui使用label标签的方法
2019/09/14 Javascript
解决vue-cli 打包后自定义动画未执行的问题
2019/11/12 Javascript
vue分页插件的使用方法
2019/12/25 Javascript
python列表去重的二种方法
2014/02/14 Python
python中使用百度音乐搜索的api下载指定歌曲的lrc歌词
2014/07/18 Python
python图像处理之镜像实现方法
2015/05/30 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
2017/09/08 Python
在Python 字典中一键对应多个值的实例
2019/02/03 Python
详解Python的三种可变参数
2019/05/08 Python
如何实现Django Rest framework版本控制
2019/07/25 Python
如何让python的运行速度得到提升
2020/07/08 Python
Move Free官方海外旗舰店:美国骨关节健康专业品牌
2017/12/06 全球购物
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
Java多态性的定义以及类型
2014/09/16 面试题
《孔繁森》教学反思
2014/04/17 职场文书
小小商店教学反思
2014/04/27 职场文书
HR求职自荐信范文
2014/06/21 职场文书
国贸专业求职信
2014/06/28 职场文书
党员学习中共十八大思想报告
2014/09/12 职场文书
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android