vue实现页面加载动画效果
(编辑:jimmy 日期: 2025/11/5 浏览:3 次 )
我们经常看到数据未出现时,页面中会有一条提示消息, 页面正在加载中,如何实现该效果呢 ,请看下面代码
<template>
<section class="page" v-if="option"
:style="{background: option.background,color: option.color||'#fff'}"
:class="{'page-before': option.index < currentPage,
'page-after': option.index > currentPage,
'page-current': option.index === currentPage}">
<div :class="{'all-center': option.isCenter}">
<slot></slot>
</div>
</section>
<section class="page" v-else>页面正在渲染中。。。</section>
</template>
有木有感觉很简单
下面上点干货,实现页面的动画效果
<template>
<nav class="controller">
<button v-if="option.arrowsType" class="prev-btn" :class="{moving:option.arrowsType === 'animate'}" @click="changePage(prevIndex)"></button>
<ul v-if="option.navbar">
<li v-for="index in pageNum" @click="changePage(index)" :class="{current:option.highlight && index === currentPage}" :key="'controller-'+index" :data-index="index" class="controller-item"></li>
</ul>
<button v-if="option.arrowsType" class="next-btn" :class="{moving:option.arrowsType === 'animate'}" @click="changePage(nextIndex)"></button>
</nav>
</template>
<script>
export default {
name: 'page-controller',
props: {
pageNum: Number,
currentPage: Number,
option: {
type: Object,
default: {
arrowsType: 'animate',
navbar: true,
highlight: true,
loop: true //是否开启滚动循环
}
}
},
methods: {
changePage (index) {
this.$emit('changePage', index);
}
},
computed: {
nextIndex () {
if (this.currentPage === this.pageNum) {
if(this.option.loop){
return 1
}else{
return this.pageNum
}
} else {
return this.currentPage + 1;
}
},
prevIndex () {
if (this.currentPage === 1) {
if(this.option.loop){
return this.pageNum
}else{
return 1
}
} else {
return this.currentPage - 1;
}
}
},
created () {
if (this.option.navbar === undefined) {
this.option.navbar = true;
}
},
mounted () {
let _this = this;
let timer = null;
let start = 0;
// 滚轮处理
function scrollHandler (direction) {
// 防止重复触发滚动事件
if (timer != null) {
return;
}
if (direction === 'down') {
_this.changePage(_this.nextIndex);
} else {
_this.changePage(_this.prevIndex);
}
timer = setTimeout(function() {
clearTimeout(timer);
timer = null;
}, 300);
}
// if (Object.hasOwnProperty.call(window,'onmousewheel')) {
if (Object.hasOwnProperty.call(window,'onmousewheel')) {
// 监听滚轮事件
window.addEventListener('mousewheel',function (event) { // IE/Opera/Chrome
let direction = event.wheelDelta > 0 "_blank" href="https://www.jb51.net/Special/874.htm">Vue.js前端组件学习教程》,欢迎大家学习阅读。
关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
下一篇:深入理解Node.js中通用基础设计模式