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)容,希望對(duì)大家的學(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)文章
100行代碼實(shí)現(xiàn)一個(gè)vue分頁組功能
今天用vue來實(shí)現(xiàn)一個(gè)分頁組件,總體來說,vue實(shí)現(xiàn)比較簡單,樣式部分模仿了elementUI。接下來本文通過實(shí)例代碼給大家介紹100行代碼實(shí)現(xiàn)一個(gè)vue分頁組功能,感興趣的朋友跟隨小編一起看看吧2018-11-11vue中keep-alive內(nèi)置組件緩存的實(shí)例代碼
這篇文章主要介紹了vue中的keep-alive內(nèi)置組件緩存,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04vue3實(shí)現(xiàn)數(shù)字滾動(dòng)特效實(shí)例詳解
這篇文章主要為大家介紹了vue3實(shí)現(xiàn)數(shù)字滾動(dòng)特效實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09