vue 实现数字滚动卡片

工作场景需求一个数字滚动的卡片展示,具体实现功能:
html页面代码:
因为场景是五位数字的场景,但是data定义number不能00000又懒的string去转number,所以定义了六位数然后投了个巧v-show直接去除第一位数。
:style="{transform: translateY(-${item*39}px)}" 是滚动的关键,其中39px是自定义的view高度

<view class="num_view" v-for="(item, index) in this.realTime" :key="index" v-show="index>0">
	<view class="real-time-num-item" :style="{transform: `translateY(-${item*39}px)`}">
		<view>0</view>
		<view>1</view>
		<view>2</view>
		<view>3</view>
		<view>4</view>
		<view>5</view>
		<view>6</view>
		<view>7</view>
		<view>8</view>
		<view>9</view>
	</view>
</view>

js处理:

data() {
	return {
		realTimeNum: 100500, 
	}
},
// 计算属性
computed: {
	realTime() {
		return `${this.realTimeNum}`.split('') || 0
	}
},
// 因为是使用uniapp写的  所以生命周期是onLoad
onLoad() {
	const that = this
	that.getData()
},
methods: {
	getData() {
		const that = this
		if(that.realTimeNum >= 150000){
			return
		}
		setInterval(function() {
			that.realTimeNum++
		}, 500);
	},
}

css样式:

.num_view{
	display: inline-block;
	width: 32px;
	height: 39px;
	/* background: linear-gradient(0deg, rgba(36, 97, 147, 1), rgba(115, 157, 191, 1)); */
	border: 2rpx solid #F2F2F2;
	font-size: 2em;
	font-weight: bold;
	margin-left: 3px;
	line-height: 39px;
	text-align: center;
	overflow: hidden;
}
.real-time-num>view {
	width: 32px;
	height: 39px;
}
.real-time-num-item {
	transition: all 1s ease-out;
}
### Vue.js 大屏可视化模板示例 #### 创建基础项目结构 为了构建一个高效的大屏可视化应用,推荐采用Vue CLI来初始化项目。这不仅简化了项目的搭建过程,还提供了丰富的插件支持。 ```bash vue create big-screen-project cd big-screen-project npm install vuex axios echarts --save ``` #### 配置Vuex Store 在`main.js`文件中配置全局状态管理工具Vuex,以便于处理复杂的数据流和共享的状态逻辑[^2]: ```javascript import { createStore } from &#39;vuex&#39;; const store = createStore({ state() { return { // 定义初始状态 } }, mutations: {}, actions: {} }); new Vue({ router, store, // 注册store实例到根组件 render: h => h(App) }).$mount(&#39;#app&#39;); ``` #### 构建大屏布局与组件划分 将整个屏幕合理切分成不同功能区,并为每一部分设计独立的Vue组件。例如,可以创建如下几个典型组件[^1]: - **Header.vue**: 屏幕顶部导航栏或标题显示区域。 - **ChartComponent.vue**: 承载ECharts或其他图表库生成的各种统计图形。 - **TextCard.vue**: 显示文字描述信息的小卡片样式容器。 ##### ChartComponent.vue 示例代码 此组件负责渲染动态更新的数据图表,利用ECharts实现复杂的视觉呈现效果。 ```html <template> <div :id="chartId" style="width: 100%; height: 400px;"></div> </template> <script> export default { name: "ChartComponent", props: [&#39;chartData&#39;], data(){ return{ chartInstance:null, }; }, mounted(){ this.initChart(); }, methods:{ initChart(){ let myChart = this.$echarts.init(document.getElementById(this.chartId)); // 设置选项... myChart.setOption(option); } } }; </script> ``` #### 实现数字滚动翻转特效 对于特定需求如数值变化时产生的动画过渡,可借鉴已有的解决方案,在这里介绍一种基于CSS3 transform属性配合JavaScript定时器完成简单而有效的数字递增动画方法[^5]。 ```css @keyframes rollNumber { from {transform: rotateX(90deg);} to {transform: rotateX(0deg);} } .number-flip span { display:inline-block; position:relative; perspective:800px; animation-name:rollNumber; animation-duration:.6s; animation-fill-mode:both; } ``` ```javascript function animateNumber(targetElement, startValue, endValue){ var duration=1000; // 动画持续时间(ms) $(targetElement).prop(&#39;Counter&#39;,startValue).animate({Counter:endValue},{ duration:duration, easing:&#39;linear&#39;, step:function(now){ $(this).text(Math.ceil(now)); } }); } ``` 通过上述方式组合起来即可形成一套完整的Vue.js大屏可视化展示方案。当然实际开发过程中还需要考虑更多细节优化以及性能调优等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值