vue.js實(shí)現(xiàn)回到頂部動(dòng)畫(huà)效果
最近使用vue.js做了幾個(gè)頁(yè)面,其中有一個(gè)回到頂部的動(dòng)畫(huà)效果記錄下。
html如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>回到頂部</title> <META HTTP-EQUIV="pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"> <META HTTP-EQUIV="expires" CONTENT="0"> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"/> <link rel="stylesheet" href="./backTop.css" type="text/css"/> </head> <body> <div class="page">1</div> <div class="page">2</div> <div class="page">3</div> <div class="page">4</div> <div class="page">5</div> <div id="back-to-top" class="back-to-top" @click="backToTop" v-show="backTopShow" v-cloak> <span>回到</span> <span>頂部</span> </div> <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script> <script src="./backTop.js" type="text/javascript"></script> </body> </html>
backTop.css如下:
* {
margin: 0px;
padding: 0px;
border: 0;
}
html, body {
width: 100%;
height: 100%;
position: relative;
background: #F2F2F2;
overflow-x: hidden;
overflow-y: auto;
z-index: 1;
}
[v-cloak] {
display: none;
}
.back-to-top {
position: fixed;
bottom: 5px;
right: 20px;
z-index: 100;
border-radius: 5px;
box-shadow: 0px 0px 2px #222;
padding: 8px 10px;
cursor: pointer;
}
.back-to-top:hover {
background: #5AC4D1;
}
.back-to-top:hover span {
color: white;
}
.back-to-top span {
display: block;
}
.page {
width: 100%;
height: 400px;
line-height: 400px;
text-align: center;
}
.page:nth-child(odd) {
background: white;
}
backTop.js 如下:
var backTopVue = new Vue({
el : "#back-to-top",
data : {
//是否顯示回到頂部
backTopShow : false,
// 是否允許操作返回頂部
backTopAllow : true,
// 返回頂部所需時(shí)間
backSeconds : 100,
// 往下滑動(dòng)多少顯示返回頂部(單位:px)
showPx : 200
},
mounted : function() {
window.addEventListener("scroll", this.backTopShowOperate, true);
},
methods : {
backTopShowOperate : function() {
if (!this.backTopAllow) return;
if (document.body.scrollTop > this.showPx) {
this.backTopShow = true;
} else {
this.backTopShow = false;
}
},
backToTop : function() {
if (!this.backTopAllow) return;
this.backToTopShow = false;
this.backTopAllow = false;
var step = document.body.scrollTop / this.backSeconds;
var backTopInterval = setInterval(function() {
if (document.body.scrollTop > 0) {
document.body.scrollTop -= step;
} else {
backTopVue.backTopAllow = true;
clearInterval(backTopInterval);
}
}, 1);
}
}
});
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
解決微信瀏覽器緩存站點(diǎn)入口文件(IIS部署Vue項(xiàng)目)
這篇文章主要介紹了解決微信瀏覽器緩存站點(diǎn)入口文件(IIS部署Vue項(xiàng)目),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06
vue中動(dòng)態(tài)設(shè)置meta標(biāo)簽和title標(biāo)簽的方法
這篇文章主要介紹了vue中動(dòng)態(tài)設(shè)置meta標(biāo)簽和title標(biāo)簽的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
Vue3中多個(gè)彈窗同時(shí)出現(xiàn)的解決思路
這篇文章主要介紹了Vue3中多個(gè)彈窗同時(shí)出現(xiàn)的解決思路,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
詳解Vue中Computed與watch的用法與區(qū)別
這篇文章主要介紹了Vue中computed和watch的使用與區(qū)別,文中通過(guò)示例為大家進(jìn)行了詳細(xì)講解,對(duì)Vue感興趣的同學(xué),可以學(xué)習(xí)一下2022-04-04
vue3.0 搭建項(xiàng)目總結(jié)(詳細(xì)步驟)
這篇文章主要介紹了vue3.0 搭建項(xiàng)目總結(jié)(詳細(xì)步驟),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
element tree樹(shù)形組件回顯數(shù)據(jù)問(wèn)題解決
本文主要介紹了element tree樹(shù)形組件回顯數(shù)據(jù)問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
Vue無(wú)法對(duì)iframe進(jìn)行緩存的解決方案
項(xiàng)目采用的若依框架,但系統(tǒng)中會(huì)嵌入大屏、報(bào)表頁(yè)面,是使用iframe來(lái)實(shí)現(xiàn)的,若依框架的菜單管理中提供了緩存功能,是使用keep-alive實(shí)現(xiàn)的,但對(duì)于iframe頁(yè)面并不生效,所以本文介紹了關(guān)于Vue無(wú)法對(duì)iframe進(jìn)行緩存的解決方案記錄,需要的朋友可以參考下2024-12-12

