JS监听滚动和id自动定位滚动


Posted in Javascript onDecember 18, 2018

本文主要介绍原生JS进行滚动监听和id定位滚动,与效果锚点类似,适用于vue。

关键性代码如下:

var scroll = document.documentElement.scrollTop || document.body.scrollTop; //获取屏幕距离顶部的距离

.js // 下述方法是引入mui+vue的案例 ,展示代码为methods里面的方法

init:function(){
  doc.addEventListener("scroll",function(){ // 实时监听,如果是ios需要做300ms延迟,否则点击索引的时候,对象距离顶部的高度不够,会出现闪动的效果,体验感不佳
    if(!noScroll){
      var appealDo = vm.$el.querySelector("#appealDo").offsetTop- 45; //获取#appealDo距离顶部的距离
      var appealComm = vm.$el.querySelector("#appealComm").offsetTop- 45; //获取#appealComm距离顶部的距离
      var scrollTop = doc.body.scrollTop || doc.documentElement.scrollTop; //获取屏幕距离顶部的距离
      if(scrollTop <= appealDo){
        vm.activeIdx = 0; // activeIdx 是表示高亮,用作顶栏菜单
      }else if(scrollTop > appealDo && scrollTop <= appealComm){
        vm.activeIdx = 1;
      }else if(scrollTop > appealComm){
        vm.activeIdx = 2;
      }
    }
    noScroll = false;
  });
},

toggleTypes:function(idx){
  noScroll = true;
  if (vm.activeIdx != idx) {
    if (idx === 0) {
      doc.body.scrollTop = 0;
      doc.documentElement.scrollTop = 0;
    }else if(idx === 1){
      vm.$nextTick(function(){
        doTop = vm.$el.querySelector("#appealDo").offsetTop - 45;
        doc.body.scrollTop = doTop;
        doc.documentElement.scrollTop = doTop;
      });
    }else{
      vm.$nextTick(function(){
        doTop = vm.$el.querySelector("#appealComm").offsetTop - 45;
        doc.body.scrollTop = doTop;
        doc.documentElement.scrollTop = doTop;
      });
    }
    vm.activeIdx = idx;
  }
},

在VUE脚手架的项目里面可以这样操作,下述案例实现的是做高度监听控制顶部菜单的透明度变化

mounted() {
  window.addEventListener('scroll', this.menu)
},
methods: {
  menu() {
    this.scroll = document.documentElement.scrollTop || document.body.scrollTop;
    var opacity = this.scroll / 44;
    if (opacity <= 1) {
      this.$nextTick(() => {
        this.opacity = opacity
      });
    } else {
      this.opacity = 1
    }

  }
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js打印纸函数代码(递归)
Jun 18 Javascript
javascript数组去掉重复
May 12 Javascript
jquery Tab效果和动态加载的简单实例
Dec 11 Javascript
再探JavaScript作用域
Sep 24 Javascript
js实现的二级横向菜单条实例
Aug 22 Javascript
js中unicode转码方法详解
Oct 09 Javascript
AngularJs表单验证实例详解
May 30 Javascript
JavaScript获取短信验证码(周期性)
Dec 29 Javascript
JS通过调用微信API实现微信支付功能的方法示例
Jun 29 Javascript
浅谈Three.js截图并下载的大坑
Nov 01 Javascript
Vue实现简单的留言板
Oct 23 Javascript
js实现电灯开关效果
Jan 19 Javascript
JS实现的tab页切换效果完整示例
Dec 18 #Javascript
CryptoJS中AES实现前后端通用加解密技术
Dec 18 #Javascript
antd组件Upload实现自己上传的实现示例
Dec 18 #Javascript
微信小程序解除10个请求并发限制
Dec 18 #Javascript
vue项目中axios请求网络接口封装的示例代码
Dec 18 #Javascript
vue中引入第三方字体文件的方法示例
Dec 17 #Javascript
vue 表单验证按钮事件交由父组件触发的方法
Dec 17 #Javascript
You might like
提问的智慧(2)
2006/10/09 PHP
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
2014/09/24 PHP
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
详解Angular中$cacheFactory缓存的使用
2016/08/19 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
js仿QQ邮箱收件人选择与搜索功能
2017/02/10 Javascript
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
2020/11/24 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
详解基于webpack搭建react运行环境
2017/06/01 Javascript
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
AngularJS 打开新的标签页实现代码
2017/09/07 Javascript
浅谈Vue Element中Select下拉框选取值的问题
2018/03/01 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
JS基于开关思想实现的数组去重功能【案例】
2019/02/18 Javascript
Vue-CLI 3.X 部署项目至生产服务器的方法
2019/03/22 Javascript
JavaScript获取时区实现过程解析
2020/09/24 Javascript
Python实现自动添加脚本头信息的示例代码
2016/09/02 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
浅谈python中的占位符
2017/11/09 Python
Python爬虫包BeautifulSoup实例(三)
2018/06/17 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
Python字典中的值为列表或字典的构造实例
2019/12/16 Python
如何理解Python中的变量
2020/06/01 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
Pycharm如何自动生成头文件注释
2020/11/14 Python
总经理助理的八要求
2013/11/12 职场文书
女大学生自我鉴定
2013/12/09 职场文书
学校大课间活动方案
2014/01/30 职场文书
工作过失检讨书
2014/02/23 职场文书
拾金不昧表扬稿大全
2015/05/05 职场文书
《领导干部从政道德启示录》学习心得体会
2016/01/20 职场文书
如何写好一份优秀的工作总结?
2019/06/21 职场文书
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电