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

2023-11-16

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)

}

效果:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • C#中File FileInfo 和Directory DirectoryInfo 类的区别

    老师在讲C 文件操作的时候讲的个类 功能类似 但用法有区别 他们都存在于systerm IO命名空间下 File和Directory的方法都是静态方法 FileInfo和DirectoryInfo的方法都是普通方法 老师建议是如果你要在某个
  • Python之PyAudio使用

    PyAudio 播放 录音 回放 回调方法播放 非阻塞回调 PyAudio 使用这个可以进行录音 播放 生成wav文件等等 播放 coding utf 8 引入库 import pyaudio import wave import sys
  • aiohttp 异步http请求-12.aiohttp 请求生命周期(和requests库有什么不一样?)

    前言 aiohttp 请求生命周期对比requests库使用的区别 aiohttp 客户端 API 当你第一次使用 aiohttp 时 你会注意到一个简单的 HTTP 请求不是一次执行的 而是最多三个步骤 async with aiohtt
  • dac0832三角波c语言程序,单片机控制DAC0832输出正弦波三角波汇编程序

    org 0000h LJMP MAIN ORG 0003H LJMP L0 MAIN MOV R2 0aH 调幅倍数 MOV R4 01H 增减选择 MOV R5 01H pp SETB EA SETB EX0 延时计数个数 MOV A 0
  • 渗透系列之排序处产生的SQL注入问题

    1 在日常的测试过程中 发现系统的排序功能最容易产生sql注入 我们需要重点关注业务系统的排序功能 一般功能点对应这类字段 sortField sortOrder order orderby等 举个排序的SQL注入案例 发现系统的一个查询功
  • 2017-2018-1 20155227 《信息安全系统设计基础》第十三周学习总结

    2017 2018 1 20155227 信息安全系统设计基础 第十三周学习总结 找出全书你认为最重要的一章 深入重新学习一下 要求 期末占10分 完成这一章所有习题 详细总结本章要点 给你的结对学习搭档讲解你的总结并获取反馈 我选择教材第
  • 冯乐乐之六,基础光照模型

    需要理清的概念 兰伯特 半兰伯特 冯模型 布林冯模型 高光反射specular 代表物体表面反射光线 漫反射diffuse 代表吸收然后散射出表面的光线 环境光ambient 自发光emissive 漫反射 漫反射从任何方向看都是一致的 漫
  • 科学推理~

    科学推理 物理 1 力学 重力 重力并不是指向地心的 只有赤道可以 弹力 重点 判断弹力方向 相互作用力 摩擦力 静摩擦力 滑动摩擦力 注意 最大静摩擦力默认等于滑动摩擦力 压强 固体压强 液体压强 连通器 气体压强 气体对外做功 T 下降
  • 计算机图形学OpenGLC++实现: 橡皮筋技术实现折线和矩形的鼠标实现(附源码)

    废话不多说 直接开始 下列是会使用到的函数简单介绍 初始化背景 void Initial void 改变窗口大小 void ChangeSize int w int h 菜单响应函数 chooseWay int value 清除当前已经画的
  • Vue3 学习笔记 —— (一)深入理解组合式 API

    Vue3 学习笔记梳理 Vue3 学习 零 Vue3 0 与 Vue2 x 的性能对比 一 搭建环境 二 创建项目 三 Vue3 Composition API 3 1 ref or setup reactive 3 1 1 非响应式数据显
  • 北斗系统学习—JT808协议用C语言解析

    前言 本人从事于Linux应用开发 音视频应用方向 现在主要是负者AI摄像头的开发 在学音视频的途中 虽然是个小白 但是更愿意把自己所学音视频的一些知识分享给大家 以后每周都会更新哦 本期介绍的是用c语言对Jt808协议解析 要对协议进行解
  • NotWritablePropertyException

    ssm项目又来一个低级错误 粗心粗心 异常信息 Caused by org springframework beans NotWritablePropertyException Invalid property mapperLocation
  • 【机器学习】人工神经网络(ANN)浅讲

    神经网络是一门重要的机器学习技术 它是目前最为火热的研究方向 深度学习的基础 学习神经网络不仅可以让你掌握一门强大的机器学习方法 同时也可以更好地帮助你理解深度学习技术 本文以一种简单的 循序的方式讲解神经网络 适合对神经网络了解不多的同学
  • Layui富文本编辑器图片上传接口(.NET C#)

    本来想偷懒找个现成的接口 搜了一下发现没有现成的 那我在这写一个并分享给大家吧 demo打包好了在我的csdn下载中心 http download csdn net download xianglikai1 9970000 下面也有代码和结
  • 设置QListWidget背景色为透明

    只要一条指令就可以实现 ui gt listWidget gt setStyleSheet background color transparent 其中background color设置参考CSS背景设置如下 以下摘自 http www
  • PD通信协议芯片选型分析对比

    目录 一 PD SINK协议芯片对比图 二 总结 关键词 pd协议芯片 协议芯片 芯片通信协议 通信协议 前言 在如今快节奏生活不断蔓延的背景下 人们对各种事情的处理也渐渐地开始要求在保证质量的情况下 不断加快 手机快充就是一个典型的例子
  • iOS开发之Xcode 6更新默认不支持armv7s架构

    最近一次的Xcode 6更新默认不再支持arm7s架构 究竟是要废除不用呢还是仅仅只是一个疏忽 目前的Xcode 6配置里定义 ARCHS STANDARD 为armv7 arm64 当然这个定义前提是它会一再要求你删除掉你原本设定的构建架
  • 将对象的null字段赋值为默认值

    import java lang reflect Field import java math BigDecimal import java util ArrayList import java util Date import org a
  • 【Redis详细教程】Linux下如何安装Redis

    第一步 下载 redis wget https download redis io releases redis 6 2 6 tar gz 第二步 解压 redis 6 2 6 tar gz 并将其重新命名为 redis tar xvf r
  • 前端实现:点击硬币实现硬币翻转动画,且动画停止时正反面随机

    html div class pic box div class boxes div class box 硬币正面图片 img alt 硬币反面图片 img div div div