Vue+elementUI 创建“回到顶部”组件
1、创建“回到顶部”组件
1 <template>
2 <transition name="el-fade-in">
3 <div class="page-up" @click="scrollToTop" v-show="toTopShow">
4 <i class="el-icon-caret-top"></i>
5 </div>
6 </transition>
7 </template>
8
9 <script>
10 export default {
11 name: "app-to-top",
12 data(){
13 return{
14 toTopShow:false,
15 }
16 },
17 methods:{
18 handleScroll() {
19 /* 获取回到顶部的位置元素 .content-container-top */
20 let dom =document.getElementsByClassName('content-container-top')[0];
21 this.scrollTop = dom.scrollTop;
22 if (this.scrollTop > 300) {
23 this.toTopShow = true;
24 }else {
25 this.toTopShow = false;
26 }
27 },
28 scrollToTop() {
29 let timer = null;
30 let _this = this;
31 cancelAnimationFrame(timer);
32 timer = requestAnimationFrame(function fn() {
33 if (_this.scrollTop > 5000) {
34 _this.scrollTop -= 1000;
35 document.getElementsByClassName("content-container")[0].scrollTop =
36 _this.scrollTop;
37 timer = requestAnimationFrame(fn);
38 } else if (_this.scrollTop > 1000 && _this.scrollTop <= 5000) {
39 _this.scrollTop -= 500;
40 document.getElementsByClassName("content-container")[0].scrollTop =
41 _this.scrollTop;
42 timer = requestAnimationFrame(fn);
43 } else if (_this.scrollTop > 200 && _this.scrollTop <= 1000) {
44 _this.scrollTop -= 100;
45 document.getElementsByClassName("content-container")[0].scrollTop =
46 _this.scrollTop;
47 timer = requestAnimationFrame(fn);
48 } else if (_this.scrollTop > 50 && _this.scrollTop <= 200) {
49 _this.scrollTop -= 10;
50 document.getElementsByClassName("content-container")[0].scrollTop =
51 _this.scrollTop;
52 timer = requestAnimationFrame(fn);
53 } else if (_this.scrollTop > 0 && _this.scrollTop <= 50) {
54 _this.scrollTop -= 5;
55 document.getElementsByClassName("content-container")[0].scrollTop =
56 _this.scrollTop;
57 timer = requestAnimationFrame(fn);
58 } else {
59 cancelAnimationFrame(timer);
60 _this.toTopShow = false;
61 }
62 });
63 }
64 },
65 mounted() {
66 this.$nextTick(function () {
67 window.addEventListener('scroll', this.handleScroll,true);// 取消事件冒泡,防止绑定失败
68 });
69 },
70 destroyed() {
71 window.removeEventListener('scroll', this.handleScroll,true);// 取消事件冒泡
72 }
73 }
74 </script>
75
76 <style scoped>
77 .page-up{
78 background-color: #409eff;
79 position: fixed;
80 right: 50px;
81 bottom: 30px;
82 width: 40px;
83 height: 40px;
84 border-radius: 20px;
85 cursor: pointer;
86 transition: .3s;
87 box-shadow: 0 3px 6px rgba(0, 0, 0, .5);
88 opacity: .5;
89 z-index: 100;
90 }
91 .el-icon-caret-top{
92 color: #fff;
93 display: block;
94 line-height: 40px;
95 text-align: center;
96 font-size: 18px;
97 }
98 p{
99 display: none;
100 text-align: center;
101 color: #fff;
102 }
103 .page-up:hover{
104 opacity: 1;
105 }
106 </style>
107
2、调用“回到顶部”组件
1 <template>
2 <div class="content-container-top">
3 <ScrollTop> </ScrollTop>
4 </div>
5 </template>
6
7 <script>
8 import ScrollTop from '../components/public/AppToTop.vue'
9 export default {
10 name: "app-list",
11 components:{
12 ScrollTop
13 }
14
15 }
16 </script>
Vue+elementUI 创建“回到顶部”组件的更多相关文章
- vue+elementUI项目,父组件向子组件传值,子组件向父组件传值,父子组件互相传值。
vue+elementUI项目,父组件向子组件传值,子组件向父组件传值,父子组件互相传值. vue 父组件与子组件相互通信 一.父组件给子组件传值 props 实现父组件向子组件传值. 1父组件里: ...
- vue回到顶部组件
html <template> <a href="javascript:;" class="toTop" @click="backT ...
- vue中的回到顶部
<template> <div class="main"> <div class="content">灰色部分是内容部分&l ...
- VUE+ElementUI创建项目
1.官网下载node,安装node.js环境 安装完成后进入cmd,输入node -v和npm -v查看node和npm是否安装成功及对应的版本 2.全局安装vue-cli:cnpm install ...
- vue+elementUI 做的递归组件
废话少说,直接上最新鲜的干货 当然,你得提前安装好bootstrap,router,element-ui,vue-axios 1.上递归组件,此处参考了某位大神的代码,具体不知道是谁,因为到处都有人用 ...
- Vue中创建单文件组件 注册组件 以及组件的使用
<template> <div id="app"> <v-home></v-home> <hr > <br> ...
- Vue+element UI实现“回到顶部”按钮组件
介绍 这是一个可以快速回到页面顶部的组件,当用户浏览到页面底部的时候,通过点击按钮,可快速回到页面顶部. 使用方法 由于该组件是基于element-UI进行二次封装的,所以在使用该组件时请务必安装el ...
- vue路由切换时内容组件的滚动条回到顶部
在使用vue的时候会出现切换路由的时候滚动条保持在原来的位置,要切换路由的时候滚动条回到顶部才有更好的用户体验 1.当页面整体都要滚动到顶部的情况 router.afterEach(() => ...
- Vue+ElementUI 导航组件
创建导航页组件 在components目录下新建一个navigation目录,在Navi目录中新建一个名为Navi.vue的组件.至此我们的目录应该是如下图所示: 然后我们修改main.js文件,修改 ...
随机推荐
- Spring Cloud Alibaba - Spring Cloud Stream 整合 RocketMQ
Spring Cloud Stream 简介 在微服务的开发过程中,可能会经常用到消息中间件,通过消息中间件在服务与服务之间传递消息,不管你使用的是哪款消息中间件,比如RabbitMQ.Kafka和R ...
- String s="a"+"b"+"c",到底创建了几个对象?
首先看一下这道常见的面试题,下面代码中,会创建几个字符串对象? String s="a"+"b"+"c"; 如果你比较一下Java源代码和反 ...
- Awesome Notes
Install $ sudo aptitude install awesome Build from source $ aria2c -s 5 http://awesome.naquadah.org/ ...
- Golang语言系列-17-Gin框架
Gin框架 Gin框架简介 package main import ( "github.com/gin-gonic/gin" "io" "net/ht ...
- centos7 更新源
centos7 yum源更新 先进入到yum源文件cd /etc/yum.repo.d/ 1.创建一个repo_bak目录,用于保存系统中原来yum的repo文件. sudo mkdir rep ...
- sql server时间转换
--getdate 获取当前时间 select getdate() --dateadd 原有时间加: 2013-02-17 13:20:16 此时间加12个月 select dateadd(MONTH ...
- NOIP 模拟 $16\; \rm God Knows$
题解 \(by\;zj\varphi\) 对于这道题,不难想到可以用 \(dp\),就是求一个最小权极长上升子序列 设 \(dp_i\) 表示最后一个选 \(i\) 时,覆盖前 \(i\) 条边的最小 ...
- NOIP 模拟 $12\; \text{简单的玄学}$
题解 有些难度 对于 \(30pts\) 直接暴力 对于 \(70pts\) 发现规律 \(2^n-a\) 与 \(a\;\;(a\in [1,2^n))\) 分解质因数后,\(2\) 的次数相同 \ ...
- flutter添加启动图及设置启动时间
首先贴个官方的设置方法,看这里:https://flutterchina.club/assets-and-images/#%E6%9B%B4%E6%96%B0%E5%90%AF%E5%8A%A8%E9 ...
- Spring详解(二)------注解配置IOC
@Configuration:告诉Spring这是一个配置类 @Bean("person")-->作用于方法:给容器中注册一个Bean;类型为返回值的类型 @Componen ...