vue實(shí)現(xiàn)原生下拉刷新
本文實(shí)例為大家分享了vue實(shí)現(xiàn)原生下拉刷新的具體代碼,供大家參考,具體內(nèi)容如下
這是動(dòng)畫樣式

文字樣式

html代碼
<template> ? <div class="car-box"> ? ? <div class="car">下拉刷新</div> ? ? <div class="box" @touchstart="fnstart" ref="Element"> ? ? ? <div class="con-txt">上拉刷新</div> ? ? </div> ? </div> </template>
js代碼
<script>
export default {
? methods: {
? ? fnstart(ev) {
? ? ? this.$refs["Element"].style.top = 0;
? ? ? this.scroolTop =
? ? ? ? ev.changedTouches[0].pageY - this.$refs["Element"].offsetTop;
?
? ? ? document.ontouchmove = this.fnmove;
? ? ? document.ontouchend = this.fnEnd;
? ? ? ev.preventDefault && ev.preventDefault();
? ? },
? ? fnmove(ev) {
? ? ? ev.target.parentNode.children[0].innerHTML = "下拉刷新";
? ? ? this.T = ev.changedTouches[0].pageY - this.scroolTop;
? ? ? if (this.scale > 0.12) {
? ? ? ? this.scale = 1 - this.T / 200;
? ? ? } else {
? ? ? ? this.scale = 0.12;
? ? ? }
? ? ? this.$refs["Element"].style.top = this.T * this.scale + "px";
? ? },
? ? fnEnd(ev) {
? ? ? ev.target.parentNode.children[0].innerHTML = "正在刷新...";
? ? ? document.ontouchmove = null;
? ? ? document.ontouchend = null;
? ? ? setTimeout(() => {
? ? ? ? this.$refs["Element"].style.top = 0;
? ? ? ? this.$refs["Element"].style.transition = ".3s ease all";
? ? ? ? this.$refs["Element"].addEventListener("transitionend", () => {
? ? ? ? ? this.$refs["Element"].style.transition = null;
? ? ? ? });
? ? ? }, 3000);
? ? },
? },
};
</script>css代碼 我這邊用的是scss
<style lang="scss" scoped>
.box {
? text-align: center;
? height: 600px;
? width: 100vw;
? background-color: orange;
? position: absolute;
? left: 0;
? top: 0;
}
.car {
? text-align: center;
? margin: auto;
? width: 199px;
? height: 60px;
? line-height: 60px;
? background-position: 0 0;
? background-size: 100% auto;
? animation: animation_car 1.5s steps(1) infinite;
}
</style>如果下拉刷新用動(dòng)畫就用這個(gè)css樣式
圖片的話我用的是28幀的 根據(jù)100除以28 也就是3.5 ,所以每3.5%換一個(gè)圖,就能形成一個(gè)逐幀動(dòng)畫,每一個(gè)頁面的寬高都不一樣所以要計(jì)算 ,我的頁面的大小是1080的這個(gè)也時(shí)我設(shè)置好的寬高。
這是代碼
<style lang="scss" scoped>
.box {
? text-align: center;
? height: 600px;
? width: 100vw;
? background-color: orange;
? position: absolute;
? left: 0;
? top: 0;
}
.car {
? text-align: center;
? margin: auto;
? width: 199px;
? height: 134px;
? // ? margin-bottom: 200px;
? background: url("../assets/img/car.png") no-repeat;
? background-position: 0 0;
? background-size: 100% auto;
? animation: animation_car 1.5s steps(1) infinite;
}
@keyframes animation_car {
? 0% {
? ? background-position: 0px;
? }
? 3.5% {
? ? background-position: 0px -134px;
? }
? 7% {
? ? background-position: 0px -268px;
? }
? 10.5% {
? ? background-position: 0px -402px;
? }
? 14% {
? ? background-position: 0px -536px;
? }
? 17.5% {
? ? background-position: 0px -670px;
? }
? 21% {
? ? background-position: 0px -804px;
? }
? 24.5% {
? ? background-position: 0px -938px;
? }
? 28% {
? ? background-position: 0px -1072px;
? }
? 31.5% {
? ? background-position: 0px -1206px;
? }
? 35% {
? ? background-position: 0px -1340px;
? }
? 38.5% {
? ? background-position: 0px -1474px;
? }
? 42% {
? ? background-position: 0px -1608px;
? }
? 45.5% {
? ? background-position: 0px -1742px;
? }
? 49% {
? ? background-position: 0px -1876px;
? }
? 52.5% {
? ? background-position: 0px -2010px;
? }
? 56% {
? ? background-position: 0px -2144px;
? }
? 59.5% {
? ? background-position: 0px -2278px;
? }
? 63% {
? ? background-position: 0px -2412px;
? }
? 66.5% {
? ? background-position: 0px -2546px;
? }
? 70% {
? ? background-position: 0px -2680px;
? }
? 73.5% {
? ? background-position: 0px -2814px;
? }
? 77% {
? ? background-position: 0px -2948px;
? }
? 80.5% {
? ? background-position: 0px -3082px;
? }
? 84% {
? ? background-position: 0px -3216px;
? }
? 87.5% {
? ? background-position: 0px -3350px;
? }
? 91% {
? ? background-position: 0px -3350px;
? }
? 94.5% {
? ? background-position: 0px -3484px;
? }
? 98% {
? ? background-position: 0px -3618px;
? }
}
?
</style>圖片

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- vue使用better-scroll實(shí)現(xiàn)下拉刷新、上拉加載
- vue插件mescroll.js實(shí)現(xiàn)移動(dòng)端上拉加載和下拉刷新
- vueScroll實(shí)現(xiàn)移動(dòng)端下拉刷新、上拉加載
- vue實(shí)現(xiàn)網(wǎng)絡(luò)圖片瀑布流 + 下拉刷新 + 上拉加載更多(步驟詳解)
- vue基于vant實(shí)現(xiàn)上拉加載下拉刷新的示例代碼
- Vue?uni-app框架實(shí)現(xiàn)上拉加載下拉刷新功能
- Vue?vant-ui框架實(shí)現(xiàn)上拉加載下拉刷新功能
- vant/vue實(shí)現(xiàn)小程序下拉刷新功能方法詳解
相關(guān)文章
vue從零實(shí)現(xiàn)一個(gè)消息通知組件的方法詳解
這篇文章主要介紹了vue從零實(shí)現(xiàn)一個(gè)消息通知組件的方法,結(jié)合實(shí)例形式分析了vue實(shí)現(xiàn)消息通知組件的具體原理、實(shí)現(xiàn)步驟、與相關(guān)操作技巧,需要的朋友可以參考下2020-03-03
vuex直接修改state、commit和dispatch修改state的用法及區(qū)別說明
這篇文章主要介紹了vuex直接修改state、commit和dispatch修改state的用法及區(qū)別說明,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
vue 如何將二維數(shù)組轉(zhuǎn)化為一維數(shù)組
這篇文章主要介紹了vue 如何將二維數(shù)組轉(zhuǎn)化為一維數(shù)組,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04
Vue項(xiàng)目中定義全局變量的幾種常用方法總結(jié)
在項(xiàng)目中經(jīng)常有些函數(shù)和變量是需要復(fù)用,比如說網(wǎng)站服務(wù)器地址,從后臺(tái)拿到的用戶的登錄token,用戶的地址信息等,這時(shí)候就需要設(shè)置一波全局變量,這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目中定義全局變量的幾種常用方法的相關(guān)資料,需要的朋友可以參考下2023-12-12
vue3接口數(shù)據(jù)賦值對象,渲染報(bào)錯(cuò)問題及解決
這篇文章主要介紹了vue3接口數(shù)據(jù)賦值對象,渲染報(bào)錯(cuò)問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
Vue使用konva實(shí)現(xiàn)一個(gè)簡便的流程圖
日常開發(fā)中我們可能碰到流程圖的需求,實(shí)現(xiàn)流程圖的庫有很多,如果我們想要實(shí)現(xiàn)一個(gè)簡便的流程圖可以使用konva庫來實(shí)現(xiàn),下面我們就來看一下具體的實(shí)現(xiàn)過程,需要的朋友可以參考下2023-08-08
解決vue安裝less報(bào)錯(cuò)Failed to compile with 1 errors的問題
這篇文章主要介紹了解決vue安裝less報(bào)錯(cuò)Failed to compile with 1 errors的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10

