需求:  页面滚动 隐藏某元素, 页面停止滚动再显示
 
1. 方法一:利用vue中的watch(侦听器)实现了这一功能,今天就以垂直滚动为例,分享一下实现方法。代码如下:
export default {
data() {
return {
oldScrollTop: 0, //记录上一次滚动结束后的滚动距离
scrollTop: 0 // 记录当前的滚动距离
}
},
watch: {
scrollTop(newValue, oldValue) {
setTimeout(() => {
if(newValue == window.scrollY) { //延时执行后当newValue等于window.scrollY,代表滚动结束
console.log('滚动结束');
this.oldScrollTop = newValue; //每次滚动结束后都要给oldScrollTop赋值
};
}, 20); //必须使用延时器,否则每次newValue和window.scrollY都相等,无法判断,20ms刚好大于watch的侦听周期,故延时20ms
if(this.oldScrollTop == oldValue) { //每次滚动开始时oldScrollTop与oldValue相等
console.log('滚动开始');
}
}
},
methods: {
handleScroll() {
window.addEventListener('scroll', () => {
this.scrollTop = window.scrollY;
})
}
},
mounted() {
this.handleScroll();
},
beforeDestroy() {
window.removeEventListener('scroll'); //离开当前组件别忘记移除事件监听哦
}
}

2. 方法二:原生js  判断滚动结束代码如下:

let m1 = 0;     // 滚动的值
let m2 = 0; // 对比时间的值
let timer = null; document.onscroll = function(){
clearTimeout(timer) // 每次滚动前 清除一次
timer = setTimeout("Data()", 1000);
m1 = document.documentElement.scrollTop || document.body.scrollTop; }
function Data(){
m2 = document.documentElement.scrollTop || document.body.scrollTop;
if(m2 == m1){
console.log('滚动结束了')
}
}

vue中判断页面滚动开始和结束的更多相关文章

  1. vue 中判断向上滚动还是向下滚动

    <script> export default { data(){ return{ i = 0 } }, mounted () { window.addEventListener('scr ...

  2. vue 中判断页面滑动方向

  3. [jquery]判断页面滚动到顶部和底部(适用于手机web加载)

    //判断页面滚动到顶部和底部 $(window).scroll(function(){ var doc_height = $(document).height(); var scroll_top = ...

  4. vue中的页面渲染方案

    一.模板渲染 <div id="J_render_app"> <ul v-if="items.length"> <li v-for ...

  5. vue中嵌套页面 iframe 标签

    vue中嵌套iframe,将要嵌套的文件放在static下面: <iframe src="../../../static/bear.html" width="300 ...

  6. vue中嵌套页面(iframe)

    vue中嵌套iframe,将要嵌套的文件放在static下面.(要将打包文件整体放在statici里,我的文件名是canvas) src可以使用相对路径,也可使用服务器根路径http:localhos ...

  7. vue中在页面渲染完之后获取元素(否则动态渲染的元素获取不到)

    两种方法: 方法一: 使用$nextTick,在异步获得数据之后再获取元素: 方法二: 在then之后再获取该元素: 问题2:vue中监听改变数组的方法: let idx =; this.listIn ...

  8. 【MFC】转:在CHtmlView中判断页面加载完成

    在列出别人的代码前,记录下自己的,覆盖父类的OnNavigateComplete2函数即可. typedef struct _tagEventURL { CString strUrl; HANDLE ...

  9. js微信禁用右上角的分享按钮,和vue中微信页面禁用右上角的分享按钮的问题

    1.隐藏微信网页右上角的按钮 document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() { // 通过下面这个 ...

随机推荐

  1. 如何使用 PuTTY 远程连接矩池云主机

    PuTTY 是一款开源的连接软件,用来远程连接服务器,支持 SSH.Telnet.Serial 等协议. 矩池云的主机支持 SSH 登录,以下为使用 PuTTY 连接矩池云 GPU 的使用教程. 如您 ...

  2. SQL从零到迅速精通【实用函数(2)】

    1.对查询结果进行排序 查询stu_info表中所有学生信息,并按照成绩由高到底进行排序,输入语句如下. SELECT * FROM stu_info ORDER BY s_score DESC;   ...

  3. SQL从零到迅速精通【实用函数(1)】

    语法是一个编程语言的基础,真的想玩的6得飞起还是要靠自己定义的函数和变量. 1.使用DECLARE语句创建int数据类型的名为@mycounter的局部变量,输入语句如下: DECLARE @myco ...

  4. 打靶笔记-02-vulhub-Hackademic.RTB1

    打靶笔记-02-vulhub-Hackademic.RTB1 一.靶机信息 Name: Hackademic: RTB1(中等难度) Date release: 6 Sep 2011 Author: ...

  5. 2.4 C++STL deque容器详解

    文章目录 2.4.1 引入 2.4.2 代码示例 2.4.3 代码运行结果 2.4.4 具体案例 总结 2.4.1 引入 deque容器类比vector容器来学习. deque为双向开口容器,见下图. ...

  6. 给Windows系统免疫不再受恶意代码骚扰

    所谓恶意代码,是指网页中使用了利用WSH漏洞来修改系统的一段代码(但是由于它并不具备传染性和自我复制这两个病毒的基本特征,因此不能称作病毒).WSH是"Windows Scripting H ...

  7. Java多线程【三种实现方法】

    java多线程 并发与并行 并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行 并行:一组程 ...

  8. 5月31日 python学习总结 JavaScript概述

    JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECM ...

  9. springcloud学习01-用intellij idea搭建Eureka服务

    0.配置intellij idea工具:https://www.cnblogs.com/wang-liang-blogs/p/12060702.html 1.使用maven构建工具构建主工程项目. 1 ...

  10. python prettytable 模块

    #coding:utf-8 # qianxiao996精心制作 from prettytable import PrettyTable x = PrettyTable(["名称", ...