vue2.0 监听滚动 锚点定位
vue中监听滚动的方法其实可以用:
// Chrome
document.body.scrollTop
// Firefox
document.documentElement.scrollTop
// Safari
window.pageYOffset
:scrollTop(滚动之根本),document.body.scrollTop的值来实现滚动,但是后来逐渐发现很邪门,
有时给其赋值并没有作用,就是不能监听滚动后来知道
mounted() {
this.$nextTick(function() {
let _this = this;
window.addEventListener("scroll", this.onScroll);
});
},
用window.addEventListener 来监听页面的滚动 ,然后在结合(如果没有啥特殊的效果推荐用)
直接用 <a href="#id"> 是最简单粗暴的办法
最后不甘心用这个 href 然后就用了 ref 这个属性来获取;
mounted() {
this.$nextTick(function() {
let _this = this;
_this.$refs.app.scrollTop = ;
_this.height = _this.$refs.app.offsetHeight;
_this.$refs.app.addEventListener("scroll", _this.onScroll, true);
//window.addEventListener("scroll", this.onScroll);
});
},
然后在div
<a href="javascript:;" data-num="1" :class="num==1?'selected':'unselected'" @click="changeTab(1)">活动规则</a>
<a href="javascript:;" data-num="2" :class="num==2?'selected':'unselected'" @click="changeTab(2)">活动介绍</a>
changeTab(num) {
const vm = this;
let otherTop = vm.$refs.other.offsetTop;
vm.num = num;
let scrollTop = 0;
switch (num) {
case 1:
vm.position = false;
scrollTop = 0;
break;
case 2:
vm.position = true;
scrollTop = vm.headerH;
break;
case 3:
vm.position = true;
scrollTop = otherTop;
break;
}
console.log(scrollTop);
setTimeout(() => {
vm.$refs.app.scrollTop = scrollTop;
}, 100);
},
如果 你就得这样不够平滑,可以 用每一小段一小段的跳,这样会导致视觉上是一个平滑的效果,
而不是我点击了就突然scrollTop就突然下去或者上来,避免了很突兀的感觉。
// 平滑滚动,时长500ms,每10ms一跳,共50跳
let step = total / 50 >> 0
这样 就可以实现 锚点 和监听滚动了 ,当然你可以在页面跳转走后销毁 ,这样体验更好
destroyed() {
window.removeEventListener("scroll", this.onScroll);
}
vue2.0 监听滚动 锚点定位的更多相关文章
- Vue 爬坑之路(七)—— 监听滚动事件 实现动态锚点
前几天做项目的时候,需要实现一个动态锚点的效果 如果是传统项目,这个效果就非常简单.但是放到 Vue 中,就有两大难题: 1. 在没有 jQuery 的 animate() 方法的情况下,如何实现平滑 ...
- vue监听滚动事件
vue中监听滚动事件,然后对其进行事件处理,一般有:1. 滚动到顶部吸附: 2. 根据滚动的位置激活对应的tab键(锚链接tab键) 这两种方式的处理都是可通过监听scroll来实现 mounted( ...
- vue监听滚动事件-元素固定位置显示
1.监听滚动事件 用VUE写一个在控制台打印当前的scrollTop用来测试是否执行: mounted () { window.addEventListener('scroll', this.hand ...
- jquery 监听所有锚点链接实现平滑移动
jquery 监听所有锚点链接实现平滑移动,地址栏上不会改变链接地址 //监听所有锚点链接实现平滑移动 $('a[href*=#],area[href*=#]').click(function() { ...
- vue监听滚动事件,实现滚动监听
在vue中实现滚动监听和原生js无太大差异,下面是一个简单的demo,可在控制台查看结果 <!DOCTYPE html> <html lang="en"> ...
- vue监听滚动事件 实现某元素吸顶或者固定位置显示
https://blog.csdn.net/wang1006008051/article/details/78003974 1.监听滚动事件 利用VUE写一个在控制台打印当前的scrollTop, 首 ...
- Linux5355端口被0.0.0.0监听
Linux后台有个systemd-resolv进程,占用5355等端口 博主在一次网络安全加固行动中,netstat -anp发现Linux后台有一个被0.0.0.0监听的端口,5355,显示被sys ...
- vue2.0 添加监听滚动事件
export default { data () { return { isFixed: true } }, mounted () { window.addEventListener('scroll' ...
- VUE 实现监听滚动事件,实现数据懒加载
methods: { // 获取滚动条当前的位置 getScrollTop() { let scrollTop = 0 if (document.documentElement && ...
随机推荐
- 基于 Node.js 的服务器自动化部署搭建实录
基于 Node.js 的服务器自动化部署搭建实录 在服务器上安装 Node.js 编写拉取仓库.重启服务器脚本 配置 Github 仓库的 Webhook 设置 配置 Node.js 脚本 其他问题 ...
- mysql中索引类型
mysql索引类型normal,unique,full text的是什么? normal:表示普通索引 unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可 ...
- mysql双主双从技术
一.准备环境 [root@localhost ~]# vim /etc/hosts 192.168.40.154 master1 192.168.40.129 master2 ...
- 应用安全 - Java - 插件 - IO - excel-streaming-reader - 漏洞汇总
xlsx-streamer.jar的XXE漏洞 Date 类型XXE 影响范围 xlsx-streamer.jar-2.0.0及以下版本 复现
- Studio 3T 破解教程
亲测可用 ,且小编一直在使用 1.创建文件studio3t.bat 并将下面这段内容复制 @echo off ECHO 重置Studio 3T的使用日期...... FOR /f "toke ...
- bi的tableau
参考: 官网: https://help.tableau.com/current/server-linux/zh-cn/get_started_server.htm 可视化分析最佳做法: 实用指南 h ...
- Spring Data Elasticsearch基本使用
目录 1. 创建工程 2. 配置application.yaml文件 3. 实体类及注解 4. 测试创建索引 5. 增删改操作 5.1增加 5.2 修改(id存在就是修改,否则就是插入) 5.3 批量 ...
- 微信小程序的拖拽、缩放和旋转手势
在开发中,有时会遇到像App中的手势那样的效果,下面就仿照App实现了一下. wxml部分: <view class="touch-container"> <vi ...
- vue-cli设置引入目录
打开build/webpack.base.conf.js 找到module.exports下的resolve这行 刚开始是这样的 resolve: { extensions: ['.js', '.vu ...
- MongoDB 学习小笔记
1.配置:mongod --dbpath=D:\MongoDB\data mongo2.基本的增删查改 find() update()-- 整体更新,局部更新. 修改器: $inc db.person ...