vue3 数据大屏项目开发中,需要一些底座效果,今天整理的是圆形底座,加数字滚动效果。
效果演示
组件代码
<template>
<div class="cardBody">
<div class="cardBodyItem wow" :class="item.animate" v-for="(item,index) in list"
:key="index">
<div class="num">
<numcard :number="item.num"></numcard>
</div>
<div class="title">{{ item.title }}</div>
</div>
</div>
</template>
<script>
import WOW from "wow.js";
import numcard from "@/components/numcard/numcard.vue";
export default {
name: "title",
data() {
return {
list: [{
title: '正式党员',
num: 4896,
animate: ' fadeInDown'
}, {
title: '预备党员',
num: 4896,
animate: ' fadeInUp'
}, {
title: '发展党员',
num: 4896,
animate: ' fadeInDown'
}, {
title: '党委',
num: 4896,
animate: ' fadeInUp'
}, {
title: '党总支',
num: 4896,
animate: ' fadeInDown'
}, {
title: '党支部',
num: 4896,
animate: ' fadeInUp'
},]
}
},
components: {numcard},
watch: {},
mounted() {
var that = this;
var wow = new WOW({
boxClass: "wow",
animateClass: "animated",
offset: 0,
mobile: true,
live: true,
scrollContainer: null,
resetAnimation: true,
});
wow.init();
},
}
</script>
<style lang="scss" scoped>
.cardBody {
position: relative;
width: calc(100% - 0px);
margin: 0 auto;
height: calc(100% - 0px);
display: flex;
justify-content: space-between;
align-items: flex-start;
flex-wrap: nowrap;
flex-direction: row;
align-content: flex-start;
.cardBodyItem {
width: 33.33%;
height: calc(100% - 0px);
position: relative;
display: flex;
justify-content: center;
align-items: center;
flex-wrap: nowrap;
flex-direction: column;
align-content: flex-start;
.title {
font-size: 14px;
font-family: MicrosoftYaHei;
font-weight: 600;
color: #fff;
margin-top: -20px;
}
.num {
display: flex;
justify-content: center;
align-items: center;
flex-wrap: nowrap;
flex-direction: row;
align-content: flex-start;
position: relative;
z-index: 12;
height: 113px;
margin-top: -20px;
width: 100%;
background: url("./assets/dizuo.png") center 0px no-repeat;
background-size: 105px 113px;
}
:deep(.num) {
.real-time-num {
font-size: 18px;
font-family: DIN-Bold;
font-weight: normal;
color: #FFFFFF;
width: auto;
}
.real-time-num-item {
text-shadow: 0 0 8px rgba(66, 163, 236, 1.00);
}
}
}
}
</style>