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 相关文章推荐
[原创]用javascript实现检测指定目录是否存在的方法
Jan 12 Javascript
一些有用的JavaScript和jQuery的片段分享
Aug 23 Javascript
使用JQuery库提供的扩展功能实现自定义方法
Sep 09 Javascript
BootStrap3学习笔记(一)之网格系统
May 20 Javascript
javascript 四十条常用技巧大全
Sep 09 Javascript
js Canvas实现圆形时钟教程
Sep 19 Javascript
微信小程序 循环及嵌套循环的使用总结
Sep 26 Javascript
javaScript日期工具类DateUtils详解
Dec 08 Javascript
解决vue-cli创建项目的loader问题
Mar 13 Javascript
react中Suspense的使用详解
Sep 01 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
Dec 04 Javascript
node使用request请求的方法
Dec 20 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求最大子序列和的算法实现
2011/06/24 PHP
php中的观察者模式简单实例
2015/01/20 PHP
php闭包中使用use声明变量的作用域实例分析
2018/08/09 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
一个javascript参数的小问题
2008/03/02 Javascript
js实现权限树的更新权限时的全选全消功能
2009/02/17 Javascript
js定时器的使用(实例讲解)
2014/01/06 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
2015/06/04 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
AngularJs自定义服务之实现签名和加密
2016/08/02 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
浅析Angular19 自定义表单控件
2018/01/31 Javascript
Webpack 之 babel-loader文件预处理器详解
2018/03/23 Javascript
浅谈webpack SplitChunksPlugin实用指南
2018/09/17 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
vue el-table实现行内编辑功能
2019/12/11 Javascript
vue实现前端分页完整代码
2020/06/17 Javascript
用Python实现随机森林算法的示例
2017/08/24 Python
Python编程scoketServer实现多线程同步实例代码
2018/01/29 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
2019/07/01 Python
Pytorch基本变量类型FloatTensor与Variable用法
2020/01/08 Python
tensorflow多维张量计算实例
2020/02/11 Python
Python标准库json模块和pickle模块使用详解
2020/03/10 Python
解决Django中checkbox复选框的传值问题
2020/03/31 Python
python操作链表的示例代码
2020/09/27 Python
HTML5+CSS3模仿优酷视频截图功能示例
2017/01/05 HTML / CSS
台湾菁英交友:结识黄金单身的台湾人
2018/01/22 全球购物
美国高端牛仔品牌:Silver Jeans
2019/12/12 全球购物
信息技术专业大学生个人的自我评价
2013/10/05 职场文书
打架检讨书400字
2014/01/17 职场文书
端午节活动总结
2014/08/26 职场文书
《最后一头战象》教学反思
2016/02/16 职场文书
广告文案的撰写技巧(实用干货)
2019/08/23 职场文书
详解vue中v-for的key唯一性
2021/05/15 Vue.js
pytorch finetuning 自己的图片进行训练操作
2021/06/05 Python
5行Python代码实现一键批量扣图
2021/06/29 Python