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 相关文章推荐
Track Image Loading效果代码分析
Aug 13 Javascript
xml分页+ajax请求数据源+dom取结果实例代码
Oct 31 Javascript
autoPlay 基于jquery的图片自动播放效果
Dec 07 Javascript
jQuery中ajax的load()方法用法实例
Dec 26 Javascript
使用AngularJS来实现HTML页面嵌套的方法
Jun 17 Javascript
JS实现超简洁网页title标题跑动闪烁提示效果代码
Oct 23 Javascript
javascript实现二级级联菜单的简单制作
Nov 19 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
Dec 04 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
Jul 21 Javascript
Vue.js常用指令之循环使用v-for指令教程
Jun 27 Javascript
Chrome调试折腾记之JS断点调试技巧
Sep 11 Javascript
详解在Vue中使用TypeScript的一些思考(实践)
Jul 06 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
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
php checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
解决PHP超大文件下载,断点续传下载的方法详解
2013/06/06 PHP
自己写的php中文截取函数mb_strlen和mb_substr
2015/02/09 PHP
PHP+JS实现的商品秒杀倒计时用法示例
2016/11/15 PHP
thinkphp5框架扩展redis类方法示例
2019/05/06 PHP
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
JavaScript实现文字与图片拖拽效果的方法
2015/02/16 Javascript
实现高性能JavaScript之执行与加载
2016/01/30 Javascript
Bootstrap滚动监听(Scrollspy)插件详解
2016/04/26 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
webpack使用 babel-loader 转换 ES6代码示例
2017/08/21 Javascript
Vue动态组件与异步组件实例详解
2019/02/23 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
2019/06/10 jQuery
Js代码中的span拼接问题解决
2019/11/22 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
基于Python Shell获取hostname和fqdn释疑
2016/01/25 Python
通过Python使用saltstack生成服务器资产清单
2016/03/01 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
2018/11/10 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
CSS Grid布局教程之浏览器开启CSS Grid Layout汇总
2014/12/30 HTML / CSS
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
Tripadvisor新西兰:阅读评论,比较价格和酒店预订
2018/02/10 全球购物
澳大利亚先进的皮肤和激光诊所购物网站:Soho Skincare
2018/10/15 全球购物
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
毕业生找工作推荐信
2013/11/21 职场文书
放假通知
2015/04/14 职场文书
创业不要错过,这4种餐饮新模式
2019/07/18 职场文书
Go中使用gjson来操作JSON数据的实现
2022/08/14 Golang
Redis主从复制操作和配置详情
2022/09/23 Redis