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 相关文章推荐
jquery select(列表)的操作(取值/赋值)
Mar 16 Javascript
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
Aug 09 Javascript
JavaScript SetInterval与setTimeout使用方法详解
Nov 15 Javascript
jQuery学习笔记之toArray()
Jun 09 Javascript
JS实现在页面随时自定义背景颜色的方法
Feb 27 Javascript
JavaScript动态提示输入框输入字数的方法
Jul 27 Javascript
无缝滚动的简单实现代码(推荐)
Jun 07 Javascript
浅析Javascript ES6中的原生Promise
Aug 25 Javascript
vue+iview+less+echarts实战项目总结
Feb 22 Javascript
微信小程序云开发之数据库操作
May 18 Javascript
vue样式穿透 ::v-deep的具体使用
Jun 04 Javascript
微信小程序:报错(in promise) MiniProgramError
Oct 30 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
再说下636单管机
2021/03/02 无线电
2021年最新CPU天梯图
2021/03/04 数码科技
php获得url参数中具有&amp;的值的方法
2014/03/05 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
php带抄送和密件抄送的邮件发送方法
2015/03/20 PHP
php无限级分类实现方法分析
2016/10/19 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
JavaScript 高级语法介绍
2009/06/15 Javascript
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
读jQuery之十 事件模块概述
2011/06/27 Javascript
js判断选择时间不能小于当前时间的示例代码
2013/09/24 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
2014/02/04 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
2014/04/14 Javascript
JavaScript中的6种运算符总结
2014/10/16 Javascript
JS往数组中添加项性能分析
2015/02/25 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
JavaScript判断变量是否为数组的方法(Array)
2016/02/24 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
jQuery实现动态文字搜索功能
2017/01/05 Javascript
jquery单击文字或图片内容放大并居中显示
2017/06/23 jQuery
js form表单input框限制20个字符,10个汉字代码实例
2019/04/12 Javascript
JavaScript Window窗口对象属性和使用方法
2020/01/19 Javascript
pyQt4实现俄罗斯方块游戏
2018/06/26 Python
flask session组件的使用示例
2018/12/25 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
ansible动态Inventory主机清单配置遇到的坑
2020/01/19 Python
CSS3 Columns分列式布局方法简介
2014/05/03 HTML / CSS
女大学生毕业找工作的自我评价
2013/10/03 职场文书
周末问候语大全
2015/11/10 职场文书
反邪教教育心得体会
2016/01/15 职场文书
vue前端工程的搭建
2021/03/31 Vue.js
pytorch中的numel函数用法说明
2021/05/13 Python
Mysql 设置boolean类型的操作
2021/06/04 MySQL
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python