VUE环境下 CSS3+JS 实现发牌 翻牌

创建牌容器(关键点:overflow:hidden):

html 复制代码
<div class="popup-box"></div>
css 复制代码
.popup-box {
    position: absolute;
    width: 100vw;
    height: 100vh;
    top: 0px;
    left: 0;
    overflow: hidden;
}

创建每一张牌《固定十张牌》:

1.父级(卡牌未放开显示背景) 卡牌子级(显示卡牌内容)

html 复制代码
<div class="popup-box-card" :class="['popup-box-card-cws' + index, item.show && 'popup-box-card' + index]" v-for="(item, index) in cardList">

    <div class="popup-top-box-card-son"
            :class="[item.show && 'popup-box-card-son-rotate']">
            <div class="popup-box-card-son-box">
              <img :src="item.Url">
              <div>Name</div>
              <div>Describe</div>
            </div>
          </div>
</div>
html 复制代码
.popup-top-box-card {
    position: absolute;
    background: url('https://oss-test.newplay7.com/20221213/16709168590023654.png') no-repeat;
    background-size: 100% 100%;
    transform: scale(0.51) rotateY(0deg);
    margin-top: 0;
    left: 210px;
    top: calc(100vh - 400px);
    transition: all 0.2s;
  }
  .popup-top-box-card-son {
    width: 100%;
    height: 100%;
    background: url('https://gd-hbimg.huaban.com/7057f0b053d03b1e3034f902ad252edd6c930fbef8d15-GA6eJ7_fw658') no-repeat;
    background-size: 100% 100%;
    opacity: 0;
    transform: rotateY(180deg);
}

初始化牌位置:

html 复制代码
  .popup-top-box-card-cws1,
  .popup-top-box-card-cws4,
  .popup-top-box-card-cws7 {
    left: 230px;
  }

  .popup-top-box-card-cws2,
  .popup-top-box-card-cws5,
  .popup-top-box-card-cws8 {
    left: 220px;
  }

开始发牌:

1.通过变量show来控制 添加 'popup-top-box-card' + index 给牌Class 改变position top left 实现发牌动作 rotateY(180deg) 实现翻牌动作

2.通过变量show来控制卡牌子级 添加 'popup-box-card-son-rotate' opacity 延迟0.05s显示0.2s卡牌内容

JS 发牌方法

html 复制代码
const addCardAnimation = (inx: number, arr: CardItemType[]) => {
  return new Promise(revele => {
    arr[inx] = { ...arr[inx], show: true}
    cardList.value = arr
      setTimeout(() => {
        revele(true)
      }, 400)
  })
}

for (let i = 0; i < cardList.value.length; i++) {
  await addCardAnimation(i, cardList.value)
}

2023-08-29 14-48-44

相关推荐
默_笙17 分钟前
🌃 HTTP 不认识你:JWT 登录鉴权的完整"酒店入住"指南
前端·javascript
Profile排查笔记34 分钟前
JavaScript 实现浏览器指纹生成:基础字段、Canvas 采样与 SHA-256 摘要
前端·人工智能·后端·自动化
不可能片场35 分钟前
Electron 子进程退化成 node 的 env 陷阱
前端·electron
搬砖记录员39 分钟前
录屏总黑屏?90% 的人没关这个开关——浏览器硬件加速冲突排查指南
前端·音视频开发
promiseThen43 分钟前
我用 7 条铁律管住 Cursor:让 AI 写代码不再「自由发挥」
前端·ai编程
梨想橙汁1 小时前
JS 核心语法:运算符流程控制、函数、数组与对象实战详解
前端·javascript
七牛开发者1 小时前
拆解 dsh:Turn 与 Step 如何组织 Agent 主循环
前端·javascript·人工智能
梨想橙汁1 小时前
JavaScript 零基础入门:引入方式、变量与数据类型,吃透原始与引用类型
前端·javascript
不可能片场1 小时前
puppeteer 调试实录:CDP 双层响应让取值永远 None
前端·electron
咖啡无伴侣1 小时前
2. 从零搭建企业级 Monorepo 工程化模板:ESLint 10 (基础骨架)+ Prettier 配置与避坑指南
前端·架构