欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue3封裝數(shù)字滾動組件的實現(xiàn)示例

 更新時間:2024年08月02日 10:14:11   作者:月傷59  
本文主要介紹了vue3封裝數(shù)字滾動組件的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

效果展示:

代碼:

<template>
	<div class="counter-container">
		<div v-for="(item, index) in numArr" :key="index" :class="item === ',' || item === '.' ? 'mark-item' : 'num-item'">
			<span class="pointer" v-if="item == ',' || item == '.'">{{ item }}</span>
			<span ref="numberItem" v-else class="num">
				{{ flipNum }}
			</span>
		</div>
	</div>
</template>

<script setup lang="ts">
import { ref, watch, nextTick, onMounted } from "vue";

const props = defineProps({
	num: {
		type: Number,
		default: 0
	},
	duration: {
		type: Number,
		default: 1
	}
});
let numArr = ref(["0", "0", ",", "0", "0", "0", ",", "0", "0", "0"]);
const flipNum = "0123456789";
// let timer = null;
const numberItem = ref<Array<HTMLSpanElement> | null>(null);

// 處理傳遞過來的數(shù)字,轉(zhuǎn)化為數(shù)組
function numToArr() {
	const str = props.num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
	numArr.value = str.split("");
}

function rollNum() {
	const numItems = numberItem.value;
	const numberArr = numArr.value.filter(item => item !== "," && item !== ".");
	numberArr.forEach((item, index) => {
		const num = parseInt(item);
		if (numItems) {
			const numItem = numItems[index];
			numItem.style.transform = `translate(-50%, -${num * 10}%)`;
		}
	});
}

// 監(jiān)聽數(shù)字變化,更新數(shù)字
const initNumber = () => {
	numToArr();
	nextTick(() => {
		setTimeout(() => {
			rollNum();
		}, props.duration * 1000);
	});
};

watch(
	() => props.num,
	() => {
		initNumber();
	}
);

onMounted(() => {
	initNumber();
});
</script>

<style lang="scss" scoped>
.counter-container {
	display: flex;
	flex-direction: row;
	align-items: center;
	justify-content: center;
}
.counter-container .num-item {
	position: relative;
	box-sizing: border-box;
	width: 22px;
	height: 34px;
	padding: 8px;
	margin-left: 4px;
	overflow: hidden;
	font-size: 20px;
	font-weight: bold;
	color: #ffffff;
	text-align: center;
	background-image: url("@/assets/images/dataBoard/num_wrap.png");
	background-repeat: no-repeat;
	background-size: 100% 100%;
}
.counter-container .mark-item {
	height: 34px;
	margin-left: 4px;
	font-size: 24px;
	font-weight: 800;
	line-height: 38px;
	color: #ffffff;
	text-align: center;
}
.counter-container .num {
	position: absolute;
	top: 6px;
	left: 50%;
	letter-spacing: 8px;
	writing-mode: vertical-lr;
	transition: all 1s ease-in-out;
	transform: translate(-50%, 0);
	text-orientation: upright;
}
</style>

到此這篇關(guān)于vue3封裝數(shù)字滾動組件的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)vue3 數(shù)字滾動組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于VUE點擊父組件按鈕跳轉(zhuǎn)到子組件的問題及解決方案

    關(guān)于VUE點擊父組件按鈕跳轉(zhuǎn)到子組件的問題及解決方案

    本文主要介紹了在Vue框架中,如何通過父組件的點擊事件打開子組件中的彈窗并展示表格內(nèi)容,主要步驟包括在父組件中定義數(shù)據(jù)屬性,創(chuàng)建并定義子組件的彈窗和表格內(nèi)容,通過props屬性和自定義事件實現(xiàn)父子組件間的數(shù)據(jù)傳遞和方法調(diào)用
    2024-10-10
  • 在Vue中使用Compass的方法

    在Vue中使用Compass的方法

    本篇文章主要介紹了在Vue中使用Compass的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Element樹形控件整合帶圖標的下拉菜單(tree+dropdown+input)

    Element樹形控件整合帶圖標的下拉菜單(tree+dropdown+input)

    Element UI 官網(wǎng)提供的樹形控件包含基礎(chǔ)的、可選擇的、自定義節(jié)點內(nèi)容的、帶節(jié)點過濾的以及可拖拽節(jié)點的樹形結(jié)構(gòu),本文實現(xiàn)了樹形控件整合帶圖標的下拉菜單,感興趣的可以了解一下
    2021-07-07
  • vue3中實現(xiàn)組件通信的方法總結(jié)

    vue3中實現(xiàn)組件通信的方法總結(jié)

    在Vue3中,有多種方法可以實現(xiàn)組件之間的通信,本文就通過代碼示例給大家總結(jié)一些vue3實現(xiàn)組件通信的常用方法,需要的朋友可以參考下
    2023-06-06
  • ElementUI+命名視圖實現(xiàn)復雜頂部和左側(cè)導航欄

    ElementUI+命名視圖實現(xiàn)復雜頂部和左側(cè)導航欄

    本文主要介紹了ElementUI+命名視圖實現(xiàn)復雜頂部和左側(cè)導航欄,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • Vue2.0+ElementUI+PageHelper實現(xiàn)的表格分頁功能

    Vue2.0+ElementUI+PageHelper實現(xiàn)的表格分頁功能

    ElementUI也是一套很不錯的組件庫,對于我們經(jīng)常用到的表格、表單、時間日期選擇器等常用組件都有著很好的封裝和接口。這篇文章主要介紹了Vue2.0+ElementUI+PageHelper實現(xiàn)的表格分頁,需要的朋友可以參考下
    2021-10-10
  • Vue的樣式綁定詳解

    Vue的樣式綁定詳解

    這篇文章主要為大家詳細介紹了Vue的樣式綁定,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • vue axios請求攔截實例代碼

    vue axios請求攔截實例代碼

    axios 是一個基于Promise 用于瀏覽器和 nodejs 的 HTTP 客戶端.這篇文章主要介紹了vue/axios請求攔截的相關(guān)知識,需要的朋友可以參考下
    2018-03-03
  • Vue.js每天必學之指令系統(tǒng)與自定義指令

    Vue.js每天必學之指令系統(tǒng)與自定義指令

    Vue.js每天必學之指令系統(tǒng)與自定義指令,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Vue父組件和子組件之間數(shù)據(jù)傳遞和方法調(diào)用

    Vue父組件和子組件之間數(shù)據(jù)傳遞和方法調(diào)用

    vue組件在通信中,無論是子組件向父組件傳值還是父組件向子組件傳值,他們都有一個共同點就是有中間介質(zhì),子向父的介質(zhì)是自定義事件,父向子的介質(zhì)是props中的屬性。
    2022-12-12

最新評論