css-实现卡牌的发牌和翻牌动画

news2024/11/14 19:35:55

场景描述:

打开抽卡界面,卡牌出现并发牌至固定的位置,此时展示的是卡牌的背面;用户点击卡牌时,卡牌进行翻转,并展示卡牌内容,或者发牌后自动进行翻转和展示。

本实例在页面挂载后自动播放动画,若需点击后再播放,只需将事件写入click事件当中即可

卡牌样式可根据具体需求设置

实现思路:

html结构:

动态设置class属性,即可实现动态的css样式及动画

<template>
  <div class="cardContent">
    <div class="cardBox">
      <div
        :class="['card-item', `card-item-${index + 1}`]"
        v-for="(item, index) in drawList"
        :key="index"
      >
        <!-- 数组中存入index值时,将写有动画的class属性赋给标签,即开始播放动画 -->
        <div
          :class="['card', selectArr.includes(index) ? 'cardAnimate' : '']"
        >卡牌背面</div>
        <div
          :class="['contxt', selectArr.includes(index) ? 'contxtAnimate' : '']"
        >卡牌{{index+1}}正面
        </div>
      </div>
    </div>
  </div>
</template>

 翻牌动画在挂载后自动执行,

 //数组中存入index值时,将写有动画的class属性赋给标签,即开始播放动画
    //自动播放翻牌动画,1500ms后播放第一张翻牌动画,然后每200ms播放一张
    for (let i = 0; i < 6; i++) {
      setTimeout(() => {
        this.selectArr.push(i);
      }, 1500 + (i - 1) * 200);
    }

 给每个卡牌进行定位,页面加载后执行相应的发牌和翻牌动画,

若翻牌动画欲设置为点击后翻牌,在methods中定义方法,并给包含卡牌正面和反面的标签父元素设置@click事件:@click=rotateCard(index)

  methods: {

    rotateCard(index) {

    this.selectArr.push(index);

    },

  },

完整代码如下:

<template>
  <div class="cardContent">
    <div class="cardBox">
      <div
        :class="['card-item', `card-item-${index + 1}`]"
        v-for="(item, index) in drawList"
        :key="index"
      >
        <!-- 数组中存入index值时,将写有动画的class属性赋给标签,即开始播放动画 -->
        <div
          :class="['card', selectArr.includes(index) ? 'cardAnimate' : '']"
        >卡牌背面</div>
        <div
          :class="['contxt', selectArr.includes(index) ? 'contxtAnimate' : '']"
        >卡牌{{index+1}}正面
        </div>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      drawList:5,
      selectArr: [],
    };
  },
  mounted() {
    //数组中存入index值时,将写有动画的class属性赋给标签,即开始播放动画
    //自动播放翻牌动画,1500ms后播放第一张翻牌动画,然后每200ms播放一张
    for (let i = 0; i < 6; i++) {
      setTimeout(() => {
        this.selectArr.push(i);
      }, 1500 + (i - 1) * 200);
    }
  },
};
</script>
<style>

/* 每张卡牌属性 */
.card-item {
  width: 212rpx;
  height: 252rpx;
  margin: 10rpx;
  border-radius: 10px;
/* 文字居中 */
  line-height:252rpx;
  text-align: center;
}
/* 翻转前 */
.card-item .card {
  width: 212rpx;
  height: 252rpx;
  border-radius: 10px;
  backface-visibility: hidden;
  background-color: aliceblue; 
}
/* 翻转后 */
.card-item .contxt {
  width: 212rpx;
  height: 252rpx;
  border-radius: 10px;
  backface-visibility: hidden;
  /* 定位于和翻转前相同的位置 */
  position: relative;
  top: -252rpx;
  left: 0;
/* Y轴翻转180°,成卡牌效果*/
  transform: rotateY(180deg);
  opacity: 0;
  background-color: bisque;
}
/*将每个卡牌进行定位*/
.card-item-1 {
  position: absolute;
  left: 20rpx;
  top: 200rpx;
  animation: issueCard1 1.5s;
}
.card-item-2 {
  position: absolute;
  left: 252rpx;
  top: 200rpx;
  animation: issueCard2 1.5s;
}
.card-item-3 {
  position: absolute;
  left: 484rpx;
  top: 200rpx;
  animation: issueCard3 1.5s;
}
.card-item-4 {
  position: absolute;
  left: 136rpx;
  top: 472rpx;
  animation: issueCard4 1.5s;
}
.card-item-5 {
  position: absolute;
  left: 368rpx;
  top: 472rpx;
  animation: issueCard5 1.5s;
}
/* 卡片翻牌 */
/* 背面 */
.cardAnimate {
  animation: rotetaCard 0.5s ease-in;
  animation-fill-mode: forwards;
}
/* 正面 */
.contxtAnimate {
  animation: contxtRotate 0.5s ease-in;
  animation-fill-mode: forwards;
}
/* 正面卡牌翻牌动画 */
@keyframes contxtRotate {
  from {
    transform: rotateY(180deg);
    opacity: 1;
  }

  to {
    transform: rotateY(0deg);
    opacity: 1;
  }
}

/* 背面卡牌翻牌动画 */
@keyframes rotetaCard {
  from {
    transform: rotateY(0);
  }

  to {
    transform: rotateY(180deg);
  }
}

/* 每张卡牌发牌动画 */
@keyframes issueCard1 {
  0% {
    position: fixed;
    top: 750rpx;
    left: 269rpx;
    transform: scale(0);
  }
  20% {
    transform: scale(1.2);
  }
  40% {
    transform: scale(1);
  }
  50% {
    position: fixed;
    top: 750rpx;
    left: 269rpx;
    transform: scale(1);
  }
  60% {
    position: fixed;
    left: 20rpx;
    top: 200rpx;
  }
  100% {
  }
}
@keyframes issueCard2 {
  0% {
    position: fixed;
    top: 750rpx;
    left: 269rpx;
    transform: scale(0);
  }
  20% {
    transform: scale(1.2);
  }
  40% {
    transform: scale(1);
  }
  50% {
    position: fixed;
    top: 750rpx;
    left: 269rpx;
    transform: scale(1);
  }
  60% {
    position: fixed;
    top: 750rpx;
    left: 269rpx;
    transform: scale(1);
  }
  70% {
    position: absolute;
    left: 252rpx;
    top: 200rpx;
  }
  100% {
  }
}
@keyframes issueCard3 {
  0% {
    position: fixed;
    top: 750rpx;
    left: 269rpx;
    transform: scale(0);
  }
  20% {
    transform: scale(1.2);
  }
  40% {
    transform: scale(1);
  }
  50% {
    position: fixed;
    top: 750rpx;
    left: 269rpx;
    transform: scale(1);
  }
  70% {
    position: fixed;
    top: 750rpx;
    left: 269rpx;
    transform: scale(1);
  }
  80% {
    position: absolute;
    left: 484rpx;
    top: 200rpx;
  }
  100% {
  }
}
@keyframes issueCard4 {
  0% {
    position: fixed;
    top: 750rpx;
    left: 269rpx;
    transform: scale(0);
  }
  20% {
    transform: scale(1.2);
  }
  40% {
    transform: scale(1);
  }
  50% {
    position: fixed;
    top: 750rpx;
    left: 269rpx;
    transform: scale(1);
  }
  80% {
    position: fixed;
    top: 750rpx;
    left: 269rpx;
    transform: scale(1);
  }
  90% {
    position: absolute;
    left: 136rpx;
    top: 472rpx;
  }
  100% {
  }
}
@keyframes issueCard5 {
  0% {
    position: fixed;
    top: 750rpx;
    left: 269rpx;
    transform: scale(0);
  }
  20% {
    transform: scale(1.2);
  }
  40% {
    transform: scale(1);
  }
  50% {
    position: fixed;
    top: 750rpx;
    left: 269rpx;
    transform: scale(1);
  }
  90% {
    position: fixed;
    top: 750rpx;
    left: 269rpx;
    transform: scale(1);
  }
  100% {
    position: absolute;
    left: 368rpx;
    top: 472rpx;
  }
}
</style>

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

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

相关文章

前端网站动态主题色解决方案

动态主题色替换分两种&#xff1a;UI 组件库主题色替换和系统主题色替换。 组件库 UI 动态主题替换现阶段只在 Element-UI 和 Vant-UI 测试过&#xff0c;根据排查这种方案应该适用于所有类似的动态主题色替换场景。 1. UI 组件库主题色替换 在进入到这一部分之前&#xff0c;…

力扣232 - 用栈实现队列【C语言实现】

用栈实现队列~一、题目描述二、思路分析三、代码详解1、结构声明与展开剖析2、入队【入栈思想】3、获取队头【出栈思想】4、出队【复用思想】5、逐步算法图解四、整体代码展示&#x1f4bb;C语言代码实现五、总结与提炼一、题目描述 示例 1&#xff1a; 输入&#xff1a; [“My…

Java基础知识+必考面试题(分享收藏版)

在学习Java语言之前&#xff0c;我们要了解相关知识体系&#xff0c;才能更好的掌握学习。那么下面我们就一起来学习JAVA语言吧~ Java语言概述 Java语言是Sun公司在1995年推出的高级编程语言&#xff0c;编程语言就是计算机语言&#xff0c;人们可以通过使用编程语言让计算机完…

Webfunny 创始人:Skywalking × Zabbix 与观纵探索可观测性

作为 Webfunny 的 PMC&#xff0c;应伟长期致力于前端监控、埋点探针的产品研发&#xff0c;伴随着全链路监控的探索&#xff0c;在整合 Skywalking 与 Zabbix 打造一体化监控平台的实践中&#xff0c;是怎样的心路历程&#xff1f; “ 从前端监控到全链路监控的挑战 Webfun…

Mockplus Cloud updated传达设计意图的新方法

Mockplus Cloud updated传达设计意图的新方法 增加了Mockplus Cloud UI 2.0&#xff0c;使UI更加直观和简洁。 引入了注解&#xff0c;为向开发人员传达设计意图提供了一种新的方式。 添加了上传图像以进一步解释任务注释的功能。 优化任务创建以改善用户体验。 提高了下载、导…

BUUCTF·鸡藕椒盐味·WP

来源&#xff1a;https://buuoj.cn/challenges#%E9%B8%A1%E8%97%95%E6%A4%92%E7%9B%90%E5%91%B3 分析 鸡藕椒盐味奇偶校验位 ~验证码如下&#xff1a;1100 1010 0000 ,而且打印的时候倒了一下。把答案哈希一下就可以提交了~ 验证码是二进制数&#xff0c;但是题目也提示了这…

【Linux】了解系统整体状态-top命令

Top命令 查看系统整体状态&#xff0c;只能查看当前系统的大概情况 整个机器CPU 内存使用情况 IO使用情况 CPU(s)&#xff1a;0.0% CPU使用情况 %us&#xff1a;user CPU time 用户占用CPU百分比 %sy&#xff1a;system CPU time 内核空间占用CPU百分比 %ni&#x…

Node的web编程(三)

一、jQuery中对ajax封装 1、底层封装&#xff1a;封装了XMLHttpRequest对象&#xff0c;既可以发送get请求&#xff0c;也可以发送post请求 $.ajax({ url&#xff1a;服务器地址, type&#xff1a;请求方式, data&#xff1a;{ //客户端向服务器发送的请求数据 参数名1&#x…

SolidWorks弯曲的波纹管制作教程

如何使用SolidWorks制作波纹管呢?可能很多小伙伴都会做,那完全的波纹管如何制作呢?有的小伙伴可能不止一种方法,可能有很多方法,可以用扫描路径等,下面我用其他方法去实现下面效果图 首先新建一个零件,选前视基准面,画一个40MM的圆,如下图 然后用拉伸凸台命令,长度给…

.net----结构和枚举

结构和枚举结构结构的声明和调用声明调用结构&#xff1a;结构的成员枚举枚举的使用枚举&#xff1a;Flags枚举结构 轻量级的类&#xff0c;与类很相似&#xff0c;均为包含数据成员和函数成员的数据结构 结构与类的区别 结构是值类型且被称为具有值语义&#xff1b;而类是引…

【Lilishop商城】No2-2.确定软件架构搭建一(本篇包括MVC框架、持久框架、缓存、认证工具、安全框架等)

仅涉及后端&#xff0c;全部目录看顶部专栏&#xff0c;代码、文档、接口路径在&#xff1a; 【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 上一篇已经看了项目的开发架构&#xff0c;都需要哪些技术&#xff0c;都按照哪些规范&#xff0c;都哪…

免杀Backdoor-factory

Patch ● 通过替换EXE、DLL、注册表等方法修复系统漏洞或问题的方法 ● BDF&#xff1a;向二进制文件中增加或者删除代码内容 ○ 某些受保护的二进制程序无法patch ○ 存在一定概率文件会被patch坏掉 后门工厂 ● 适用于windows PE x32/x64和Linux ELF x32/x64(OSX) ● 支持…

【JVM】内存模型:原子性、可见性、有序性的问题引出与解决

一、内存模型 很多人将【java 内存结构】与【java 内存模型】傻傻分不清&#xff0c;【java 内存模型】是 Java MemoryModel&#xff08;JMM&#xff09;的意思。 简单的说&#xff0c;JMM 定义了一套在多线程读写共享数据时&#xff08;成员变量、数组&#xff09;时&#x…

(七)RabbitMQ持久化

RabbitMQ持久化1、概念2、队列持久化3、消息持久化4、不公平分发5、预取值1、概念 默认情况下 RabbitMQ 退出或由于某种原因崩溃时&#xff0c;它忽视队列和消息&#xff0c;除非告知它不要这样做。确保消息不会丢失需要做两件事&#xff1a;我们需要将队列和消息都标记为持久化…

广义OOD检测最新综述

arXiv在2021年10月21日上传的论文**“Generalized Out-of-Distribution Detection: A Survey“&#xff0c;作者来自新加坡的南洋理工大学&#xff08;NTU&#xff09;和美国的威斯康星大学Madison分校**。 OOD检测对确保机器学习系统的可靠性和安全性至关重要&#xff0c;例如…

秦皇岛科学选育新品种 国稻种芯·中国水稻节:河北谱丰收曲

秦皇岛科学选育新品种 国稻种芯中国水稻节&#xff1a;河北谱丰收曲 冀时客户端报道&#xff08;河北台 张志刚 米弘钊 赵永鑫&#xff09; 新闻中国采编网 中国新闻采编网 谋定研究中国智库网 国稻种芯中国水稻节 中国农民丰收节国际贸易促进会 中国三农智库网-功能性农业农业…

Java对象拷贝原理剖析及最佳实践

作者&#xff1a;宁海翔 1 前言 对象拷贝&#xff0c;是我们在开发过程中&#xff0c;绕不开的过程&#xff0c;既存在于Po、Dto、Do、Vo各个表现层数据的转换&#xff0c;也存在于系统交互如序列化、反序列化。 Java对象拷贝分为深拷贝和浅拷贝&#xff0c;目前常用的属性拷…

2023年系统规划与设计管理师-学习计划安排

一.学习计划和安排&#xff1a; 序号 学习内容 分数以及题型 学习安排 完成日期 1 浏览教程&#xff0c; 了解知识结构 1天 11/24 2 前三章内容&#xff1a; 课本&#xff0c; 单元练习&#xff0c; 思维导图&#xff0c; 总结归纳&#xff0c; 第一遍背诵 分数占…

希望所有计算机学生都知道这些宝藏课程

数据结构 青岛大学——王卓老师的数据结构与算法基础 浙江大学——陈越、何钦铭老师的数据结构课程 清华大学——邓俊辉老师的数据结构课程 北京大学——数据结构基础课程 操作系统 哈工大——李治军老师的操作系统 清华大学——操作系统原理 南京大学——操作系统概述 计算…

机器学习知识经验分享之一:卷积神经网络介绍

文章目录前言一、卷积神经网络的构成1.卷积层2.池化层3.激活函数4.批量归一化5.损失函数二、卷积神经网络的特点总结前言 本系列文章将对机器学习知识进行分享总结。便于大家从理论层面了解人工智能基础原理&#xff0c;从而更好的运用算法发论文写作以及实际应用。关注即免费…