前端实现:点击硬币实现硬币翻转动画,且动画停止时正反面随机

news2024/11/24 17:21:54

html:

      <div class="pic-box" ref="animationBox">
            <div class="boxes" @click="handleTransform">
                <div class="box">
                    // 硬币正面图片
                    <img :class="coin1 ? 'img-pic' : 'img-text'" :src="coinPic" alt="">
                    // 硬币反面图片
                    <img :class="coin1 ? 'img-text' : 'img-pic'" :src="coinText" alt="">
                </div>
            </div>
            <div class="boxes" @click="handleTransform">
                <div class="box">
                    <img :class="coin2 ? 'img-pic' : 'img-text'" :src="coinPic" alt="">
                    <img :class="coin2 ? 'img-text' : 'img-pic'" :src="coinText" alt="">
                </div>
            </div>
            <div class="boxes" @click="handleTransform">
                <div class="box">
                    <img :class="coin3 ? 'img-pic' : 'img-text'" :src="coinPic" alt="">
                    <img :class="coin3 ? 'img-text' : 'img-pic'" :src="coinText" alt="">
                </div>
            </div>
        </div>

样式定义:

.pic-box {
    width: 100%;
    padding: 0 40px;
    display: flex;
    justify-content: space-between;
    .boxes {
      width: 190px;
      height: 190px;
      background-image: url('@/assets/image/hexagram/home/coin-bg.png');
      background-size: cover;
      background-repeat: no-repeat;
    }

    .box
    {
      width: 100%;
      height: 100%;
      position: relative;
      overflow: hidden;
      .img-pic {
        width: 156px;
        height: 156px;
        position: absolute;
        top: 17px;
        left: 17px;
        z-index: 1;
      }

      .img-text {
        width: 156px;
        height: 156px;
        position: absolute;
        top: 17px;
        left: 17px;
        z-index: 0;
      }
    }
  }
  .pic-box-animation {
    .box {
      animation: box-animation .5s linear 0s infinite;
      .img-pic {
        animation: img-pic-animation .5s linear 0s infinite;
      }
      .img-text {
        animation: img-text-animation .5s linear 0s infinite;
      }
    }


    @keyframes box-animation {
      0% {
        transform: rotateY(0deg)
      }
      50% {
        transform: rotateY(180deg)
      }
      100% {
        transform: rotateY(360deg)
      }
    }

    @keyframes img-pic-animation {
      0% {
        z-index: 1;
      }
      50% {
        z-index: 0;
      }
      100% {
        z-index: 1;
      }
    }

    @keyframes img-text-animation {
      0% {
        z-index: 0;
      }
      50% {
        z-index: 1;
      }
      100% {
        z-index: 0;
      }
    }
  }

变量定义:

<script setup>
import {ref} from 'vue'

// 硬币的正反  0为字面,1为图面
const coin1 = ref(0)
const coin2 = ref(0)
const coin3 = ref(0)

</script>

事件定义:

const timer = null
const animationBox = ref(null)
const handleTransform = () => {
     // 防止1.5秒内重复点击
    if (timer) return
    animationBox._rawValue.classList.add('pic-box-animation')
    timer = setTimeout(() => {
        animationBox._rawValue.classList.remove('pic-box-animation')
        timer = null
        // 设置三个硬币的正反面
        coin1.value = Math.round(Math.random())
        coin2.value = Math.round(Math.random())
        coin3.value = Math.round(Math.random())

    }, 1500)

}

效果:

 

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

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

相关文章

智能载波远程集抄系统

智能载波远程集抄系统是一种基于物联网技术的先进能源管理系统&#xff0c;它通过利用电力载波通信技术&#xff0c;实现对用户用电数据的远程抄表和监控。该系统不仅可以提高能源管理的效率和精度&#xff0c;同时还可以减少能源浪费和节省成本。 智能载波远程集抄系统主要由三…

Ceph 应用

Ceph 应用 一、创建 CephFS 文件系统 MDS 接口 1.服务端操作 1&#xff09;在管理节点创建 mds 服务 cd /etc/ceph ceph-deploy mds create node01 node02 node032&#xff09;查看各个节点的 mds 服务 ssh rootnode01 systemctl status ceph-mdsnode01 ssh rootnode02 syst…

不满足于RPC,详解Dubbo的服务调用链路

系列文章目录 【收藏向】从用法到源码&#xff0c;一篇文章让你精通Dubbo的SPI机制 面试Dubbo &#xff0c;却问我和Springcloud有什么区别&#xff1f; 超简单&#xff0c;手把手教你搭建Dubbo工程&#xff08;内附源码&#xff09; Dubbo最核心功能——服务暴露的配置、使用…

学习opencv.js(一)

opencv.js是什么 OpenCV.js 是 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;的 JavaScript 版本。OpenCV 是一个广泛使用的计算机视觉和图像处理库&#xff0c;提供了一系列功能强大的算法和工具&#xff0c;用于处理图像、视频、特征提取、对象识别等…

LAXCUS:面向AI的数据计算平台

随着人工智能技术的快速发展&#xff0c;数据计算需求呈现出爆炸式增长。为了满足这一需求&#xff0c;越来越多的企业和研究机构开始寻求更加高效、灵活和可扩展的分布式操作系统。在这个背景下&#xff0c;LAXCUS分布式操作系统应运而生&#xff0c;它是一个面向人工智能的数…

这些会议录音转文字教程还不赶紧学起来?

小芳&#xff1a;嘿&#xff0c;你知道有一些软件可以帮助我们将会议记录中的音频转换成文字吗&#xff1f; 小乐&#xff1a;当然&#xff01;有几种方法可以做到。我们可以直接使用一些音频转文字工具实现。 小芳&#xff1a;那有没有特别推荐的工具&#xff1f; 小乐&…

把一个页面的内容导出为canvas类型的一个图片

效果&#xff1a; 点击即可 下载 打开 得到一个图片 代码&#xff1a; import html2canvas from html2canvas; 弹窗的确认按钮 const handleOk (values) > {visible.value false;printOut(导出告知卡) }; const printOut (name) > {document.body.scrollTop 0; …

应用案例 | 高效的工厂资产管理

自加入艾默生的DeltaV联盟产品计划以来&#xff0c;Softing一直致力于将设备管理的应用范围扩大到整个过程自动化工厂&#xff0c;并将设备管理的访问范围扩展到企业外部。 一 背景 随着现代流程工业对能源效率及灵活性需求的日益增长&#xff0c;在不同系统之间交换过程数据和…

Linux下使用命令行和配置文件两种方式实现主从复制

一、什么是主从复制&#xff1f; Redis的主从复制&#xff08;Master-Slave Replication&#xff09;是一种数据复制机制&#xff0c;其中一个Redis实例充当主节点&#xff08;Master&#xff09;&#xff0c;而其他一个或多个Redis实例则充当从节点&#xff08;Slave&#xff…

在树莓派搭建私人音乐服务器navidrome,并支持显示中文歌词

title: 019《树莓派4B家庭服务器搭建指南》第十九期&#xff1a;在树莓派搭建私人音乐服务器navidrome&#xff0c;并支持显示中文歌词 2023年&#xff0c;国产硬盘价格真的是经济实惠&#xff0c;而版权之争导致我们无法从单个平台获取想听的歌&#xff0c;本期我们将在树莓派…

一文带你玩转C语言文件操作

作者主页&#xff1a; paper jie的博客_CSDN博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文录入于《系统解析C语言》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金…

推荐企业的5大FTP传输替代方案(真货)

保护公司文件很重要&#xff0c;使用FTP可能不是最安全的选择。建议公司了解5种FTP传输替代方案。 使用最广泛的文件传输协议之一FTP无法满足安全性、完整性和可用性的三个目标。如果在业务运营中使用 FTP&#xff0c;那么是时候寻找替代方案了。这篇文章介绍了一些适用于公司…

java 报错

1. 问题&#xff1a;Error: could not open C:\Program Files\Java\jre1.8.0_311\lib\amd64\jvm.cfg‘ 原因&#xff1a;之前安装过高版本的JDK&#xff0c;然后删除安装低版本的JDK&#xff0c;配置好环境变量之后输入java -version出现如下错误: 这是因为在环境变量中Path中…

vue3+element 表格单元格合并

//SKU合并列表数据 function objectSpanMethod({ row, column, rowIndex, columnIndex }:any){ let data goodsList.value //拿到当前tatle 的数据 let cellValue row[column.property]; //当前位置的值 let noSortArr [attr_string, goods_unit, goods_sum, sale_money, …

golang 日志库logrus实践

logrus完全兼容标准的log库&#xff0c;还支持文本、JSON 两种日志输出格式。很多知名的开源项目都使用了这个库&#xff0c;如大名鼎鼎的 docker。 快速使用 第三方库需要先安装&#xff1a; $ go get github.com/sirupsen/logrus 后使用&#xff1a; package mainimport (&qu…

GPlates——【将化石点标记在古地理图上时,改变标记点的大小和形状】

GPlates在还原古地理图和计算古坐标点上功能十分卓越&#xff0c;最近在使用它标注某个类群的化石坐标点时&#xff0c;这些点在地图上显示得非常小&#xff0c;让人不易察觉。作为一款优秀的GUI应用&#xff0c;应该具备更改标记点外观的功能&#xff0c;然而在查阅了官方手册…

C# 快乐数

202 快乐数 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。 如果这个过程 结果为…

智安云重磅上线,“数智一体“赋能智安云生态价值实现!

智安网络作为互联网行业的先行者和持续创新者&#xff0c;一直秉承着为客户创造更多数字化价值的理念&#xff0c;在这一信念下&#xff0c;致力于为用户打造一个开放、安全、透明和便捷的云计算平台。2023年7月19日&#xff0c;智安云平台V1.0.2版本正式上线&#xff0c;开始面…

深入理解C语言链表

链表是一种常见的数据结构&#xff0c;广泛应用于计算机科学中。C语言提供了丰富的指针操作&#xff0c;使得链表的实现相对简便。本博客将介绍链表的基本概念&#xff0c;以及使用C语言实现链表的代码示例。 目录 一、链表的基本概念 二、链表的分类 三、通俗例子&#xff…

90%的人都不知道的聊天机器人作用和应用场景,你知道吗?

现在是信息爆炸的时代&#xff0c;随着人工智能的飞速发展&#xff0c;智能聊天机器人正在以惊人的速度崭露头角。简单来说&#xff0c;聊天机器人是一种可以模拟和处理人类会话&#xff08;无论是书面还是口头会话&#xff09;的计算机程序&#xff0c;数字设备可以像真人一样…