vue实现滑动超出指定距离回顶部功能


Posted in Javascript onJuly 31, 2019

本文实例为大家分享了vue实现滑动超出指定距离回顶部功能,供大家参考,具体内容如下

效果图展示:

vue实现滑动超出指定距离回顶部功能

1、当页面滑动时执行scrollToTop ()函数,判断滑动的距离是否超出指定距离,注意下面获取getElementsByClassName时,是你被滑动标签的class。

mounted() {
  window.addEventListener('scroll', this.scrollToTop, true)
 }
scrollToTop () {
  let This = this
  let dom = document.getElementsByClassName('content')[0];//获取滑动模块的信息(注意class别写错)
  This.scrollTop = dom.scrollTop;
  if (This.scrollTop > 200) {
    This.btnFlag = true
  } else {
    This.btnFlag = false
  }
}

2、当超出指定距离会出来向上的小图标,点击执行backTop ()函数回顶部。图标我是用的阿里矢量图标引入到项目中,样式自己调一下。

// 点击图标回到顶部方法,加计时器是为了缓慢回到顶部
backTop () {
  let This = this
  let timer = setInterval(() => {
    let ispeed = Math.floor(-This.scrollTop / 5)
    document.getElementsByClassName('content')[0].scrollTop = This.scrollTop + ispeed
    if (This.scrollTop === 0) {
      clearInterval(timer)
    }
  }, 16)
},

完整代码请看下面:

<template>
 <div class="scrollTop-wrap">
  <div v-if="btnFlag" class="go-top">
    <li class="iconfont iconhuidaodingbu" @click="backTop()"></li>
  </div>
 </div>
</template>
<script>
 import { httpGetMethod } from '../common/httpService'
 export default {
  name: 'scrollTop',
  data: function () {
   return {
    btnFlag:false,
    scrollTop:0//当前滑动距离
   }
  },
  mounted() {
    window.addEventListener('scroll', this.scrollToTop, true)
  },
  destroyed () {
    window.removeEventListener('scroll', this.scrollToTop, true)
  },
  methods: {
    // 点击图标回到顶部方法,加计时器是为了缓慢回到顶部
    backTop () {
      let This = this
      let timer = setInterval(() => {
        let ispeed = Math.floor(-This.scrollTop / 5)
        document.getElementsByClassName('content')[0].scrollTop = This.scrollTop + ispeed
        if (This.scrollTop === 0) {
          clearInterval(timer)
        }
      }, 16)
    },
    // 计算距离顶部的高度,当高度大于200显示回顶部图标,小于200则隐藏
    scrollToTop () {
      let This = this
      let dom = document.getElementsByClassName('content')[0];//获取滑动模块的信息(注意class别写错)
      This.scrollTop = dom.scrollTop;
      if (This.scrollTop > 200) {
        This.btnFlag = true
      } else {
        This.btnFlag = false
      }
    }
  }
 }
</script>
<style lang="scss">
 @import '../styles/mixin';
 .scrollTop-wrap {
  position: relative;
  .go-top{
   position: absolute;
   top: 430px;
   left: 260px;
   z-index: 15;
   .iconhuidaodingbu{
     font-size: 30px;
     color: #87878A;
     background-color:#fff;
     border-radius: 50%;
   }
  }
 }
</style>

在其他页面引用一下:

<template>
 <div class="wtll-wrap">
  <div calss="content">
     这里是你的滑动内容
  </div>
  <scrollTop></scrollTop>
 </div>
</template>
<script>
 import scrollTop from '../components/scrollTop'
 export default {
  name: 'wtll',
  data: function () {
   return {
   }
  },
  components: {
   scrollTop
  },
  methods: {
  }
 }
</script>

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

Javascript 相关文章推荐
传递参数的标准方法(jQuery.ajax)
Nov 19 Javascript
从零开始学习jQuery (二) 万能的选择器
Oct 01 Javascript
jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)
Oct 20 Javascript
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
Dec 08 Javascript
js 金额文本框实现代码
Feb 14 Javascript
Js 正则表达式知识汇总
Dec 02 Javascript
简单理解vue中Props属性
Oct 27 Javascript
jquery实现下拉框多选方法介绍
Jan 03 Javascript
vue中添加mp3音频文件的方法
Mar 02 Javascript
javascript异常处理实现原理详解
Feb 17 Javascript
如何实现echarts markline标签名显示自己想要的
Jul 20 Javascript
Vue管理系统前端之组件拆分封装详解
Aug 23 Javascript
Vue实现回到顶部和底部动画效果
Jul 31 #Javascript
详解mpvue实现对苹果X安全区域的适配
Jul 31 #Javascript
vue将后台数据时间戳转换成日期格式
Jul 31 #Javascript
Vue Element UI + OSS实现上传文件功能
Jul 31 #Javascript
原生js代码能实现call和bind吗
Jul 31 #Javascript
微信小程序下拉框搜索功能的实现方法
Jul 31 #Javascript
javascript中undefined的本质解析
Jul 31 #Javascript
You might like
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
配置eAccelerator和XCache扩展来加速PHP程序的执行
2015/12/22 PHP
PHP转换文本框内容为HTML格式的方法
2016/07/20 PHP
取得窗口大小 兼容所有浏览器的js代码
2011/08/09 Javascript
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
jquery进行数组遍历如何跳出当前的each循环
2014/06/05 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
2014/06/17 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
JQuery插入DOM节点的方法
2015/06/11 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
2016/04/04 Javascript
javascript如何定义对象数组
2016/06/07 Javascript
Vue.js一个文件对应一个组件实践
2016/10/27 Javascript
Bootstrap基本组件学习笔记之列表组(11)
2016/12/07 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
详解如何在Javascript和Sass之间共享变量
2019/11/13 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
在vue中通过render函数给子组件设置ref操作
2020/11/17 Vue.js
[35:34]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
Python对象转JSON字符串的方法
2016/04/27 Python
selenium+python自动化测试之环境搭建
2019/01/23 Python
python仿evething的文件搜索器实例代码
2019/05/13 Python
Django网络框架之HelloDjango项目创建教程
2019/06/06 Python
django 中QuerySet特性功能详解
2019/07/25 Python
利用ImageAI库只需几行python代码实现目标检测
2019/08/09 Python
Python读取ini配置文件传参的简单示例
2021/01/05 Python
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
2012/11/25 面试题
手术室护士自我鉴定
2013/10/14 职场文书
奥利奥广告词
2014/03/20 职场文书
2016教师节感恩话语
2015/12/09 职场文书
如何判断pytorch是否支持GPU加速
2021/06/01 Python