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

news/2024/5/2 18:46:58/文章来源:https://blog.csdn.net/m0_53206841/article/details/128019045

场景描述:

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

本实例在页面挂载后自动播放动画,若需点击后再播放,只需将事件写入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.luyixian.cn/news_show_36496.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

systemd 252 如预期的锁定了 Linux 引导过程

导读今天给大家介绍一下systemd 252锁定 Linux 引导过程systemd 252 如预期的锁定了 Linux 引导过程 之前&#xff0c;我们 报道 过&#xff0c;systemd 创始人发文指出 Linux 引导过程不安全&#xff0c;并提出采用加密签名的统一内核镜像&#xff08;UKI&#xff09;&#x…

linux搭建git服务器,windows客户端配置git

Linux服务器配置之Git服务器搭建步骤&#xff1a; 一、配置环境 1、服务器&#xff1a;CentOS 8.2&#xff08;64位&#xff09; Git &#xff08;version 2.27.0&#xff09; 2、客户端&#xff1a;Windows 10 &#xff08;64位&#xff09; Git&#xff08;version 2.38.…

Actipro Windows Forms Controls 22.1.3 注册版

Actipro Windows Forms Controls 窗体控件 一组用于构建漂亮的 Windows 窗体桌面应用程序的 UI 控件 语法编辑器 语法高亮代码编辑器控件和解析套件。 为您自己的应用程序带来类似于 Visual Studio 的强大代码编辑体验&#xff0c;以及流行代码编辑器中的所有高级功能。大多数流…

C#程序采用AOT发布,真的可以避免被反编译?

上次跟大家分享过&#xff0c;C#程序反编译与篡改代码的教程《C#程序发布时&#xff0c;一定要好好的保护&#xff0c;不然你会后悔的&#xff01;》&#xff0c;根据这个教程&#xff0c;我们都知道C#程序&#xff0c;发布后必须进行加密混淆&#xff0c;不然就是相当于源码直…

Redis基础命令(set类型)交集并集差集

目录 概述: 特征&#xff1a; Set常见命令&#xff1a; 1.Sadd key number..&#xff1a;向set中添加一个或多个元素 2.Srem key number...&#xff1a;移除set中指定的元素 3.Scard key&#xff1a;返回set中元素的个数 4.Sismember key member&#xff1a;判断一个元素…

html实现好看的导航主页(附源码)

文章目录1.设计来源1.1 主界面1.2 底部导航1.3 屏幕保护2.效果和源码2.1 动态效果2.2 源代码源码下载作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/128028326 html实现好看的导航主页(附源码) html实现好看的导航主页&…

小小王总,如何变成任正非、化腾、强东这样的巨人!

原创&#xff1a;小姐姐味道&#xff08;微信公众号ID&#xff1a;xjjdog&#xff09;&#xff0c;欢迎分享&#xff0c;非公众号转载保留此声明。王总特别迷信外面的企业培训。当遇到问题时&#xff0c;他喜欢去取经。这个经不像唐僧取经一样&#xff0c;需要历经九九八十一难…

谱本征正交分解 (SPOD)附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

python下载安装教程

1、下载python 下载地址&#xff1a;https://www.python.org/&#xff0c;点击Downloads,选择对应电脑系统&#xff0c;进行下载。 &#xff08;文末送读者福利&#xff09; 2、安装python&#xff0c;以python3.10.7安装为例。 &#xff08;1&#xff09;双击安装包&#x…

[ Linux ] 进程间通信之共享内存

在上篇博文我们了解了通过管道完成进程间通信&#xff0c;我们了解匿名管道和命名管道&#xff0c;并且通过编码模拟实现使用了匿名管道和命名管道。我们知道要让进程间完成通信必须让这两个进程首先看到同一份资源&#xff0c;因此给予这个前提&#xff0c;本篇博文我们了解另…

Java 内存溢出(二)使用 MAT 分析 .hprof 内存映像文件

目录一、内存溢出时自动导出 .hprof 文件二、下载安装 MAT三、启动 MAT四、MAT 分析 hprof 文件1.Overview 概览2.Leak Suspects 溢出原因猜测3.Histogram 对象实例数量排序4.Dominator Tree 支配树.hprof 文件&#xff1a; 是 java 项目的 Heap Dump 文件&#xff0c;也叫内存…

基于JAVA的新闻发布管理系统开发参考【数据库设计、源码、开题报告】

数据库脚本下载地址&#xff1a; https://download.csdn.net/download/itrjxxs_com/86427655 目的 本系统的目的是实现新闻发布系统的基本功能。新闻发布系统提供了不同类型新闻&#xff08;如社会新闻、娱乐新闻和技术前沿新闻等&#xff09; 满足不同用户需求&#xff1b;系…

简述供应商管理SRM系统

简道云SRM管理系统供应商关系管理(SRM系统)&#xff0c;是企业可以用来对供应商的优势和能力进行系统的、全行业范围的评估&#xff0c;涉及企业整体的商业战略&#xff0c;供应商寻源、采购审批、比价、招投标管理、订单执行、库存可视化管理、财务支付审批对账、供应商绩效评…

Steam项目推进 (一) ——项目情况简述

一、前言 之前跟一个策划朋友一起做过一个小项目Demo&#xff0c;然后中止了大半年&#xff0c;现在想继续把这个项目推进下去。又怕自制力不够&#xff0c;所以建立一个栏目来记录这个项目的推进情况&#xff0c;记忆在项目中学习到的东西。 二、目前的项目情况 1、项目定位…

Flutter高仿微信-第32篇-单聊-语音

Flutter高仿微信系列共59篇&#xff0c;从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图&#xff1a; 详情请参考 Flutter高仿微信-第29篇-单聊 &#xff0c; 这里只是提取语音聊天实…

基于遥感和GIS技术的生态承载力评价的解决方案

生态承载力的概念最早来自于生态学。1921年&#xff0c;Park和Burgess在生态学领域中首次应用了生态承载力的概念&#xff0c;即在某一特定环境条件下&#xff08;主要指生存空间、营养物质、阳光等生态因子的组合&#xff09;&#xff0c;某种个体存在数量的最高极限。生态承载…

APP到底有没有权限-恶意拷贝删除照片

作者&#xff1a;黑蛋 近期发生了一件比较恶劣的事情&#xff0c;某客户在某物上面买了一件东西&#xff0c;但是这个东西是假货&#xff0c;所以客户致电某物人工客服&#xff0c;并进行了录音&#xff0c;这时候某物试图通过自身的客户端软件&#xff0c;去删除客户手机上的…

Python字符串及正则表达式

一&#xff1a; 字符串可以用单引号或双引号来创建&#xff0c;也可以用三引号来创建多行字符串。 String_1 加快发展 String_2 "促进生产" String_3 """吾家吾国&#xff0c; 吾家吾国&#xff0c; 吾家吾国&#xff0c; 吾家吾国。""…

Principal branch

In mathematics, a principal branch is a function which selects one branch (“slice”) of a multi-valued function. Most often, this applies to functions defined on the complex plane. Contents1 Examples1.1 Trigonometric inverses1.2 Exponentiation to fraction…

计算机网络的定义和分类

计算机网络早期定义&#xff1a;自治互联的计算机集合 计算机网络系统的基本组成为&#xff1a;通信子网资源子网 计算机网络分类&#xff1a; 公用网通常是由电信公司出资建造的大型网络。 专用网通常是由某个部门为满足本单位特殊业务的需要建造的网络&#xff…