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

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

  1. let m1 = 0; // 滚动的值
  2. let m2 = 0; // 对比时间的值
  3. let timer = null;
  4.  
  5. document.onscroll = function(){
  6. clearTimeout(timer) // 每次滚动前 清除一次
  7. timer = setTimeout("Data()", 1000);
  8. m1 = document.documentElement.scrollTop || document.body.scrollTop;
  9.  
  10. }
  11. function Data(){
  12. m2 = document.documentElement.scrollTop || document.body.scrollTop;
  13. if(m2 == m1){
  14. console.log('滚动结束了')
  15. }
  16. }

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. 矩池云上安装及使用Milvus教程

    选择cuda10.1的镜像 更新源及拷贝文件到本地 apt-get update cp -r /public/database/milvus/ / cd /milvus/ cp ./lib/* /us ...

  2. 小程序WXS 模块

    WXS(WeiXin Script)是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构 WXS中定义的函数可以在wxml文件中使用,可以用它来当过滤器使用 WXS以.wxs扩展名结尾,文件中 ...

  3. mysql保存emoji表情,utf8mb4保存不了表情的问题

    报错信息 : Incorrect string value: '\xF0\x9F\x99\x85\xE2\x80...' for column 'content' at row 1 mysql数据库的 ...

  4. centos7 安装mysql Package: akonadi-mysql-1.9.2-4.el7.x86_64 (@anaconda)

    wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release ...

  5. vue 通信:父子通信、兄弟通信、跨多层通信、vuex状态管理

    之前简单做了一次vue通信方法的培训,在此记录一下培训的内容. 关于vue通信,大家最先想到的方法应该是props.ref.$emit.$parent,还有vuex,因为这也是我在项目中最常用到的方法 ...

  6. Web调试工具之调试方法

    转载于: http://toutiao.com/news/6242781162012410370/ 一.Firefox 插件之 Firebug, 火狐调试利器[初学必备] 为什么要第一个提到火狐呢?因 ...

  7. C++ 接口的实现方式

    一.接口的定义 有时候,我们得提供一些接口给别人使用.接口的作用,就是提供一个与其他系统交互的方法.其他系统无需了解你内部细节,并且也无法了解内部细节,只能通过你提供 给外部的接口来与你进行通信.根据 ...

  8. Kubernetes:Ingress总结(二)

    Blog:博客园 个人 参考:Ingress | Kubernetes.<Kubernetes进阶实战> Contour是Kubernetes Ingress控制器的另一款开源实现,它以高 ...

  9. 阿里云服务器搭建vulhub靶场

    阿里云服务器搭建vulhub靶场 环境 服务器:阿里云服务器 系统:centos7 应用:vulhub 步骤 vulhub需要依赖docker搭建,首先安装docker. 使用以下方法之一: # cu ...

  10. app自动化toast信息获取

    移动端测试比较常遇到toast类型的提示信息,那么对于这类信息我们要怎么获取呢,让我细细道来: 首先,获取toast信息要注意以下几点: 必须是Uiautomator2框架,设备配置参数中设置 &qu ...