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面向对象包装类Class封装类库剖析
Jan 24 Javascript
js中scrollTop()方法和scroll()方法用法示例
Oct 03 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
Dec 14 Javascript
jQuery ajax读取本地json文件的实例
Oct 31 jQuery
Vuex提升学习篇
Jan 11 Javascript
React 项目迁移 Webpack Babel7的实现
Sep 12 Javascript
vue删除html内容的标签样式实例
Sep 13 Javascript
20个必会的JavaScript面试题(小结)
Jul 02 Javascript
VUE解决 v-html不能触发点击事件的问题
Oct 28 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
Dec 19 Javascript
原生JavaScript实现购物车
Jan 10 Javascript
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
Apr 06 Vue.js
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 strtok()函数的优点分析
2010/03/02 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
2012/03/01 PHP
php中curl和file_get_content的区别
2014/05/10 PHP
PHP统计当前在线用户数实例讲解
2015/10/21 PHP
php bootstrap实现简单登录
2016/03/08 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
javascript实现面向对象类的功能书写技巧
2010/03/07 Javascript
jquery下实现overlay遮罩层代码
2010/08/25 Javascript
jquery下异步提交表单 异步跨域提交表单
2010/11/17 Javascript
juqery 学习之五 文档处理 包裹、替换、删除、复制
2011/02/11 Javascript
常用的JavaScript WEB操作方法分享
2015/02/28 Javascript
js实现精美的银灰色竖排折叠菜单
2015/05/16 Javascript
浅谈javascript原型链与继承
2015/07/13 Javascript
Bootstrap选项卡动态切换效果
2016/11/28 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
2017/04/25 Javascript
JavaScript箭头(arrow)函数详解
2017/06/04 Javascript
使用 jQuery 实现表单验证功能
2017/07/05 jQuery
解决AjaxFileupload 上传时会出现连接重置的问题
2017/07/07 Javascript
Vue 滚动行为的具体使用方法
2017/09/13 Javascript
微信小程序实现MUI数字输入框效果
2018/01/31 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
2018/05/07 Javascript
如何实现一个webpack模块解析器
2018/10/24 Javascript
javascript数据类型中的一些小知识点(推荐)
2019/04/18 Javascript
Python实现根据IP地址和子网掩码算出网段的方法
2015/07/30 Python
浅谈python import引入不同路径下的模块
2017/07/11 Python
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
python把1变成01的步骤总结
2019/02/27 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
2019/06/17 Python
python交易记录整合交易类详解
2019/07/03 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
解决Pycharm 运行后没有输出的问题
2021/02/05 Python
高清安全摄像头系统:Lorex Technology
2018/07/20 全球购物
小班开学寄语
2014/04/04 职场文书
机关作风建设心得体会
2014/10/22 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书