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 相关文章推荐
将CKfinder整合进CKEditor3.0的新方法
Jan 10 Javascript
基于JQuery的一个简单的鼠标跟随提示效果
Sep 23 Javascript
Jquery时间验证和转换工具小例子
Jul 01 Javascript
IE中鼠标经过option触发mouseout的解决方法
Jan 29 Javascript
jQuery验证元素是否为空的两种常用方法
Mar 17 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
May 10 Javascript
jQuery数组处理函数整理
Aug 03 Javascript
使用伪命名空间封装保护独自创建的对象方法
Aug 04 Javascript
jQuery利用sort对DOM元素进行排序操作
Nov 07 Javascript
微信小程序开发之入门实例教程篇
Mar 07 Javascript
jQuery表格(Table)基本操作实例分析
Mar 10 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
Oct 15 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
PHP获取当前执行php文件名的代码
2017/03/02 PHP
CI框架实现创建自定义类库的方法
2018/12/25 PHP
IE 上下滚动展示模仿Marquee机制
2009/12/20 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
提交按钮的name='submit'引起的js失效问题及原因
2015/02/25 Javascript
JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同
2015/11/15 Javascript
jquery表单验证需要做些什么
2015/11/17 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
2016/04/27 Javascript
Bootstrap整体框架之JavaScript插件架构
2016/12/15 Javascript
基于JavaScript实现自动更新倒计时效果
2016/12/19 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
Vue加载json文件的方法简单示例
2019/01/28 Javascript
js实现固定区域内的不重叠随机圆
2019/10/24 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
pymongo给mongodb创建索引的简单实现方法
2015/05/06 Python
Python中逗号的三种作用实例分析
2015/06/08 Python
简单谈谈Python中的反转字符串问题
2016/10/24 Python
Python创建xml文件示例
2017/03/22 Python
关于Django外键赋值问题详解
2017/08/13 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
python实现用类读取文件数据并计算矩形面积
2020/01/18 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
弄清Pytorch显存的分配机制
2020/12/10 Python
python如何构建mock接口服务
2021/01/28 Python
pandas按条件筛选数据的实现
2021/02/20 Python
HTML5 用动画的表现形式装载图像
2016/03/08 HTML / CSS
Lampenwelt德国:欧洲领先的灯具和照明在线商店
2018/08/05 全球购物
Dogeared官网:在美国手工制作的珠宝
2019/08/24 全球购物
统计每一学生的平均成绩
2014/06/06 面试题
饲料采购员岗位职责
2013/12/19 职场文书
导游词怎么写
2015/02/04 职场文书
考博导师推荐信范文
2015/03/27 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书
解决redis批量删除key值的问题
2022/03/23 Redis