Vue3中如何实现数字翻牌效果?

news2024/11/24 4:56:37

一、需求

监听数据的变化,实现数字翻牌效果

本人OS:本想截一个gif,但是一直没找到合适的截gif工具......有好用的截gif工具,跪求戳戳我~

二、思路

1.设置初始数组:[0]

2. 把获取到的新数据整个数字用逗号隔开,组成一个新的数组

3.数组中的每一个数字都是在0~9之间移动展示,数字位移的通用公式:

transform: translate(-50%,-${number * 10}%)

4.监听数据的变化,当数据变化时,获取每个数字对应的ref,添加位移样式即可,移动的时间可以自行调整

三、完整代码

<template>

  <div class="digitalFlopBox">

    <div class="title">数字翻牌器</div>

    <div class="btn">

      <button @click="changeNum">点我</button>

    </div>

    <div class="boxContainer">

      <div class="box-item" v-for="(item, index) in state.numList" :key="index">

        <span class="itemNum" :class="{ isChange: state.flag }" ref="spanRefs">0123456789</span>

      </div>

    </div>

  </div>

</template>

<script setup lang='ts' name="funDigitalFlop">

import { reactive, ref, watch } from 'vue'

const spanRefs = ref()

const state = reactive({

  numList: [0],

  flag: false

})

const changeNum = () => {

  state.numList = [1, 5, 3, 2]

}

watch(() => state.numList, (newVal, oldVal) => {

  console.log(newVal, oldVal, '数据变化');

  if (newVal !== oldVal) {

    console.log(spanRefs.value);

    spanRefs.value.map((item: any, index: number) => {

      const span = spanRefs.value[index];

      if (span) {

        span.style.transform = `translate(-50%, -${newVal[index] * 10}%)`

      }

    })

  }

},

  { deep: true }

)

</script>

<style lang="scss" scoped>

.digitalFlopBox {

  .title {

    width: 100%;

    text-align: center;

    font-size: 30px;

    padding: 10px;

  }

  .btn {

    text-align: center;

    margin-bottom: 10px;

  }

  .boxContainer {

    display: flex;

    justify-content: center;

    align-items: center;

    width: 300px;

    height: 200px;

    background-color: #ccc;

    margin: 0 auto;

    .box-item {

      width: 30px;

      height: 50px;

      box-shadow: 0px 6px 9px 0px rgba(28, 119, 255, 0.25);

      border-radius: 2px 2px 2px 2px;

      background: rgba(10, 35, 126, 0.5);

      border: 1px solid #3978dd;

      color: #fff;

      text-align: center;

      line-height: 50px;

      font-size: 30px;

      margin-left: 10px;

      position: relative;

      writing-mode: vertical-lr; // 从左到右垂直排版

      text-orientation: upright;

      overflow: hidden; // 溢出隐藏

      .itemNum {

        position: absolute;

        top: 10px;

        left: 50%;

        transform: translateX(-50%);

        letter-spacing: 10px;

        transition: transform 1s ease-in-out;

      }

      // .isChange {

      //   transform: translate(-50%, -50%);

      // }

    }

  }

}

</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/489810.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

让Bito帮你写Mokito单元测试

前言 现在稍微大一点的公司应该都有单测覆盖率要求&#xff0c;比如核心工程单测覆盖率95%以上&#xff0c;非核心工程90%以上。单测可以降低开发错误的反馈回路&#xff0c;减少重复工作&#xff0c;提升开发效率。但是写单测对于开发来说需要额外的时间。我们可以用TestMe、…

AdaBoost算法介绍和代码实现

AdaBoost算法介绍和代码实现 算法原理 AdaBoost算法的核心思想是将弱分类器组合成一个强分类器。在每一轮迭代中&#xff0c;AdaBoost会训练一个新的弱分类器并调整每个样本的权重&#xff0c;使得之前分类错误的样本在下一轮迭代中受到更多的关注。最终&#xff0c;AdaBoost…

认识监听器(Listener)

监听器是什么&#xff1f; 监听器&#xff08;Listener&#xff09;是一种运行在后台的程序&#xff0c;它主要用于监控某些事件在系统中的发生&#xff0c;并且根据这些事件做一些特定的处理。在Web应用程序中&#xff0c;监听器可以观察ServletContext、HttpSession以及Serv…

PostgreSQL-数值类型

数值类型是最常用的几种数据类型之一&#xff0c;主要分为&#xff1a; 整型浮点型精确小数 数值类型介绍 数值类型列表 类型名称存储空间描述范围smallint2字节小范围的整数。Oracle中没有此数值类型&#xff0c;使用number代替-2^15 ~ 2^15-1int 或 integer4字节常用的整数…

日常开发为什么需要做Code Review

日常开发为什么需要做Code Review 一、背景 最近在开始一个新的项目&#xff0c;在查看项目中代码及具体细节时&#xff0c;发现这个项目真实一堆乱麻&#xff0c;没有规律可循&#xff0c;可总结下这个项目的缺陷 没有规律可循&#xff0c;没有结构性设计不做公共封装&#…

08_Uboot顶层Makefile分析_make过程

目录 make 过程 make 过程 配置好 uboot 以后就可以直接make 编译了,因为没有指明目标,所以会使用默认目标,主 Makefile 中的默认目标如下: 目标_all 又依赖于all,如下所示: 如果KBUILD_EXTMOD为空的话_all 依 赖 于all 。这 里 不 编 译 模 块,所 以KBUILD_EXTMOD肯定为空,_…

二分分类.

2.1 二分分类 在神经网络的计算中&#xff0c;通常先有一个叫做前向暂停(forward pause)或叫做前向传 播(foward propagation)的步骤&#xff0c;接着有一个叫做反向暂停(backward pause) 或叫做反向传播 (backward propagation)的步骤。 一张图片在计算机中是如何表示的&…

4。计算机组成原理(1)数据表示和运算

嵌入式软件开发&#xff0c;非科班专业必须掌握的基本计算机知识 核心知识点&#xff1a;数据表示和运算、存储系统、指令系统、总线系统、中央处理器、输入输出系统 一 进位计数法和不同进制数的相互转换 其他进制(b)&#xff0c;转十进制的计算公式 十进制数&#xff0c;转…

Linux系统编程——多线程[上]:线程概念和线程控制

目录 1.再谈页表 2.Linux线程概念 2.1pthread原生库的基本使用 2.2PID和LWP 2.3Linux线程的资源以及优缺点 2.4Linux线程健壮性问题 2.5可重入函数和线程独立栈 3.Linux线程控制 3.1Linux线程终止 3.2Linux线程等待 3.3线程取消 3.4线程分离 使用线程库的注意事项…

【Python入门】Python基础语法

前言 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于Python零基础入门系列&#xff0c;本专栏主要内容为Python基础语法、判断、循环语句、函…

净利润同比增长48.9%,中国平安“一览众山小”

中国平安价值迸发的速度&#xff0c;或许超过了所有人的想象。 4月26日晚&#xff0c;中国平安发布2023年一季度业绩报告&#xff0c;许多自媒体用“炸裂”来形容其亮眼的财务数据。财报显示&#xff0c;第一季度&#xff0c;集团实现营收2537.78亿元&#xff0c;同比增长30.8…

农机电招平台~java

摘要 随着农机电招行业的不断发展&#xff0c;农机电招在现实生活中的使用和普及&#xff0c;农机电招行业成为近年内出现的一个新行业&#xff0c;并且能够成为大群众广为认可和接受的行为和选择。设计农机电招平台的目的就是借助计算机让复杂的销售操作变简单&#xff0c;变…

LeetCode:383. 赎金信

&#x1f34e;道阻且长&#xff0c;行则将至。&#x1f353; &#x1f33b;算法&#xff0c;不如说它是一种思考方式&#x1f340; 算法专栏&#xff1a; &#x1f449;&#x1f3fb;123 题解目录 一、&#x1f331;[383. 赎金信](https://leetcode.cn/problems/ransom-note/)…

DOM概述

DOM概述 什么是DOM对象树化的DOM模型DOM 节点 如何获取DOM元素如何更改我们的DOM模型常用属性修改控制样式属性 事件事件监听 事件类型鼠标事件键盘事件焦点事件文本框输入事件 事件对象回调函数DOM 节点插入节点插入节点删除节点查找节点父子关系兄弟关系 什么是DOM 当网页被…

SPSS如何进行因子分析和主成分分析之案例实训?

文章目录 0.引言1.因子分析2.主成分分析 0.引言 因科研等多场景需要进行绘图处理&#xff0c;笔者对SPSS进行了学习&#xff0c;本文通过《SPSS统计分析从入门到精通》及其配套素材结合网上相关资料进行学习笔记总结&#xff0c;本文对因子分析和主成分分析进行阐述。 1.因子分…

Android:LeakCanary原理的简单理解和使用

LeakCanary原理的简单理解和使用 1、背景2、LeakCanary2.1、LeakCanary 工作原理2.1.1、检测未被 GC 回收的对象2.1.2、转储堆2.1.3、分析堆2.1.4、对泄漏进行分类 2.2、LeakCanary 使用2.2.1、引入依赖2.2.1.1、原理 2.2.2、配置 LeakCanary2.2.3、检测内存泄漏 3、Fragment 和…

Hystrix断路器 (豪猪)-保险丝

一、概述 重点&#xff1a;能让服务的调用方&#xff0c;够快的知道被调方挂了&#xff01;不至于说让用户在等待。 Hystix 是 Netflix 开源的一个延迟和容错库&#xff0c;用于隔离访问远程服务、第三方库&#xff0c;防止出现级联失败&#xff08;雪崩&#xff09;。 雪崩&am…

自动驾驶行业观察之2023上海车展-----车企发展趋势(2)

自主品牌发展 比亚迪&#xff1a;展示3款新车&#xff0c;均于2023年年内上市 比亚迪在本次展会上推出了3款新车&#xff1a;宋L概念车&#xff08;王朝系列&#xff09;、驱逐舰07&#xff08;海洋系列&#xff09;、海鸥&#xff08;海洋系列&#xff09;。 • 宋L&#x…

FreeRTOS:任务的创建和删除

目录 一、函数xTaskCreate二、函数xTaskCreateStatic三、函数xTaskCreateRestricted四、函数vTaskDelete五、任务创建和删除&#xff08;动态&#xff09;代码5.1实验要求5.2程序代码 一、函数xTaskCreate 此函数用来创建一个任务&#xff0c;任务需要RAM来保存与任务有关的状…

Mysql数据库基本操作(增删改查)

目录 一、数据库的基本操作1.1 登录数据库1.2 创建数据库并进入数据库 二、查看数据库结构2.1 查看数据库信息2.2 查看数据库中包含的表及表结构2.3、常用的数据库类型 三、Mysql数据文件3.1 MYD文件3.2 MYI文件3.3 MyISAM存储引擎 四、SQL 语句1、 DDL数据定义语言1.1 删除指定…