【HTML + CSS 魔法秀】打造惊艳 3D 旋转卡片

HTML结构

  • box 类是整个组件的容器。
  • item-wrap 类是每个旋转卡片的包装器,每个都有一个内联样式--i,用于控制动画的延迟。
  • item类是实际的卡片内容,包含一个图片。
typescript 复制代码
<template>
  <div class="box">
    <div class="item-wrap" style="--i: 0">
      <div class="item"><img src="@/static/common_bot.png" alt="img" class="image" /></div>
    </div>
    <div class="item-wrap" style="--i: 1">
      <div class="item"><img src="@/static/common_bot.png" alt="img" class="image" /></div>
    </div>
    <div class="item-wrap" style="--i: 2">
      <div class="item"><img src="@/static/common_bot.png" alt="img" class="image" /></div>
    </div>
    <div class="item-wrap" style="--i: 3">
      <div class="item"><img src="@/static/common_bot.png" alt="img" class="image" /></div>
    </div>
    <div class="item-wrap" style="--i: 4">
      <div class="item"><img src="@/static/common_bot.png" alt="img" class="image" /></div>
    </div>
    <div class="item-wrap" style="--i: 5">
      <div class="item"><img src="@/static/common_bot.png" alt="img" class="image" /></div>
    </div>
  </div>
</template>

CSS样式

  • .item-wrap 使用display: contents;来移除包装器的边界框,只保留子元素的边界框。
  • animation 属性定义了一个名为slide的关键帧动画,每个.item-wrap根据--i变量的不同而有不同的延迟。
  • .item 类包含了一个transform属性,用于控制卡片的平移和缩放。
  • transition 属性定义了.item变换的过渡效果。
javascript 复制代码
<style scoped>
.box {
  display: flex;
  justify-content: center;
  align-items: center;
  position: relative;
  height: calc(100vh - 300px);
  background: rgba(31, 48, 53, 0.8);
}

.image {
  width: 100%;
  height: 100%;
}

@property --index {
  syntax: "<number>";
  initial-value: 0;
  inherits: false;
}

@keyframes slide {
  0% {
    --index: 0;
  }

  100% {
    --index: 6;
  }
}

.item-wrap {
  display: contents;
  animation: slide 12s calc(-2s * var(--i)) steps(6) infinite;
}

.item {
  position: absolute;
  display: grid;
  place-content: center;
  width: 180px;
  height: 180px;
  border-radius: 8px;
  background-color: rgba(67, 141, 255, 0.4);
  border: 1px solid rgba(67, 141, 255, 0.8);
  color: #fff;
  font-size: 30px;
  counter-increment: num;
  transform: translate(var(--translate)) scale(var(--scale));
  transition: .5s transform;
  animation: slide 12s calc(-2s * var(--i)) infinite;
}

.item-wrap:hover.item {
  animation-play-state: paused;
}

@container style(--index: 0) {
  .item {
    transform: translate(0, 0) scale(1);
    z-index: 4;
  }
}

@container style(--index: 1) {
  .item {
    transform: translate(120%, -30%) scale(0.9);
    z-index: 3;
  }
}

@container style(--index: 2) {
  .item {
    transform: translate(100%, -70%) scale(0.8);
    z-index: 2;
  }
}

@container style(--index: 3) {
  .item {
    transform: translate(0, -90%) scale(0.7);
    z-index: 1;
  }
}

@container style(--index: 4) {
  .item {
    transform: translate(-100%, -70%) scale(0.8);
    z-index: 2;
  }
}

@container style(--index: 5) {
  .item {
    transform: translate(-120%, -30%) scale(0.9);
    z-index: 3;
  }
}
</style>
相关推荐
云飞云共享云桌面11 小时前
广东东莞制造工厂10人共享一台三维设计服务器
运维·服务器·3d·自动化·制造
钱栈up12 小时前
前端改了三页、后端也动了,用户说「完全没变化」——我在 116 库上找到的三个真凶
css·数据库
七仔啊14 小时前
多视角深度重建
3d
DolitD15 小时前
国产信创+实时云渲染:数字孪生智慧矿山UE5流畅推流
3d·信息可视化·云计算·图形渲染·数据可视化
燕落南枝17 小时前
CSS 字体样式:颜色、字体族、倾斜、加粗与装饰
前端·css
熊猫钓鱼>_>20 小时前
端侧高斯泼溅(3DGS)渲染与性能调优初探:把“实景重建“跑在手机上【鸿蒙心迹】
开发语言·3d·华为·智能手机·harmonyos
java1234_小锋20 小时前
【技术专题】HTML5 网页技术 - Web Storage 本地存储 & 文件 API & 拖放 API
前端·html·html5
狮子座的男孩21 小时前
html+css基础:24、2D变换(位移/缩放/旋转/扭曲(了解)/多重变换/变换原点)
前端·css·经验分享·html·2d位移·原点变换·缩放/旋转/扭曲
云飞云共享云桌面21 小时前
一台SolidWorks设计服务器多人共享落地方案和配置
运维·服务器·3d·电脑·制造
Solange__21 小时前
AI材质生成、图片贴图和材质扫描怎么选?按5类3D资产比较PBR、可编辑与授权
人工智能·3d·ai·自然语言处理·材质·贴图·游戏策划