HTML+CSS:3D轮播卡片

效果演示

实现了一个3D翻转的卡片动画,其中每个卡片都有不同的图片和不同的旋转角度。整个动画循环播放,无限次。整个页面的背景是一个占据整个屏幕的背景图片,并且页面内容被隐藏在背景图片之下。

Code

html 复制代码
<div class="container">
    <div class="card-box">
        <div class="card">
            <img src="./img/鞠婧祎04.jpg">
        </div>
        <div class="card">
            <img src="./img/章若楠01.jpg">
        </div>
        <div class="card">
            <img src="./img/鞠婧祎02.jpg">
        </div>
    </div>
</div>
css 复制代码
body {
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: #e8e8e8;
    overflow: hidden;
}

* {
    margin: 0;
    padding: 0;
}

.container {
    width: 600px;
    height: 350px;
    margin-top: 60px;
    perspective: 1000px;
    position: relative;
}

.card-box {
    position: absolute;
    width: 100%;
    height: 100%;
    transform-style: preserve-3d;
    transform: rotateY(0) translateZ(-700px);
    animation: cardRotate 10s cubic-bezier(0.77, 0, 0.175, 1) infinite;
}

.card {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    -webkit-box-reflect: below 15px -webkit-linear-gradient(transparent 50%, rgba(255, 255, 255, 0.3));
}

.card img {
    width: 100%;
    height: 100%;
    border-radius: 10px;
}

.card:nth-child(1) {
    transform: rotateY(0) translateZ(700px);
}

.card:nth-child(2) {
    transform: rotateY(120deg) translateZ(700px);
}

.card:nth-child(3) {
    transform: rotateY(240deg) translateZ(700px);
}

@keyframes cardRotate {

    0%,
    20% {
        transform: translateZ(-700px) rotateY(0);
    }

    45% {
        transform: translateZ(-700px) rotateY(-120deg);
    }

    75% {
        transform: translateZ(-700px) rotateY(-240deg);
    }

    100% {
        transform: translateZ(-700px) rotateY(-360deg);
    }
}

实现思路拆分

css 复制代码
body {
  height: 100vh; /* 设置页面高度为视口高度 */
  display: flex; /* 使用弹性布局 */
  justify-content: center; /* 居中水平 */
  align-items: center; /* 居中垂直 */
  background-color: #e8e8e8; /* 设置背景颜色 */
  overflow: hidden; /* 隐藏溢出部分 */
}

这段代码设置了页面的基本样式,包括高度、居中、背景颜色和溢出部分的隐藏。

css 复制代码
* {
  margin: 0;
  padding: 0;
}

这段代码取消了所有的内外边距,使得页面更加整洁。

css 复制代码
.container {
  width: 600px; /* 设置容器宽度 */
  height: 350px; /* 设置容器高度 */
  margin-top: 60px; /* 设置容器与页面顶部的距离 */
  perspective: 1000px; /* 设置容器的透视效果 */
  position: relative; /* 设置容器为相对定位 */
}

这段代码设置了容器的基本样式,包括宽度、高度、与页面顶部的距离、透视效果和相对定位。

css 复制代码
.card-box {
  position: absolute;
  width: 100%;
  height: 100%;
  transform-style: preserve-3d;
  transform: rotateY(0) translateZ(-700px);
  animation: cardRotate 10s cubic-bezier(0.77, 0, 0.175, 1) infinite;
}

这段代码设置了卡片盒子的基本样式,包括绝对定位、宽度、高度、3D效果、动画效果和无限次播放。

css 复制代码
.card {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  -webkit-box-reflect: below 15px -webkit-linear-gradient(transparent 50%, rgba(255, 255, 255, 0.3));
}

这段代码设置了卡片的基本样式,包括绝对定位、宽度、高度、倒影效果。

css 复制代码
.card img {
  width: 100%;
  height: 100%;
  border-radius: 10px;
}

这段代码设置了卡片图片的基本样式,包括宽度、高度和圆角。

css 复制代码
.card:nth-child(1) {
  transform: rotateY(0) translateZ(700px);
}

.card:nth-child(2) {
  transform: rotateY(120deg) translateZ(700px);
}

.card:nth-child(3) {
  transform: rotateY(240deg) translateZ(700px);
}

这段代码设置了每张卡片的初始位置和旋转角度。

css 复制代码
@keyframes cardRotate {

  0%,
  20% {
    transform: translateZ(-700px) rotateY(0);
  }

  45% {
    transform: translateZ(-700px) rotateY(-120deg);
  }

  75% {
    transform: translateZ(-700px) rotateY(-240deg);
  }

  100% {
    transform: translateZ(-700px) rotateY(-360deg);
  }
}

这段代码定义了一个名为cardRotate的动画,包括四个关键帧,分别对应卡片的旋转角度和位置。

相关推荐
桂月二二22 分钟前
探索前端开发中的 Web Vitals —— 提升用户体验的关键技术
前端·ux
hunter2062062 小时前
ubuntu向一个pc主机通过web发送数据,pc端通过工具直接查看收到的数据
linux·前端·ubuntu
qzhqbb2 小时前
web服务器 网站部署的架构
服务器·前端·架构
刻刻帝的海角2 小时前
CSS 颜色
前端·css
浪浪山小白兔3 小时前
HTML5 新表单属性详解
前端·html·html5
lee5763 小时前
npm run dev 时直接打开Chrome浏览器
前端·chrome·npm
2401_897579653 小时前
AI赋能Flutter开发:ScriptEcho助你高效构建跨端应用
前端·人工智能·flutter
limit for me4 小时前
react上增加错误边界 当存在错误时 不会显示白屏
前端·react.js·前端框架
浏览器爱好者4 小时前
如何构建一个简单的React应用?
前端·react.js·前端框架
qq_392794484 小时前
前端缓存策略:强缓存与协商缓存深度剖析
前端·缓存