3D效果轮播图

3D效果轮播图

代码

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }

    body {
      perspective: 800px;
      transform-style: preserve-3d;
    }

    .box {
      display: flex;
      width: 250px;
      height: 250px;
      margin: 150px auto;
      /*   overflow: hidden; 溢出隐藏和3D变化会导致子元素溢出父元素盒子的问题相冲突,会导致不同图片3D效果切换无法实现*/
      position: relative;
      transform-style: preserve-3d;
      transition: all 0.5s;
    }

    img {
      display: block;
      width: 250px;
      height: 250px;
      position: absolute;
      top: 0;
      left: 0;
      /* position: absolute; */
    }

    @keyframes ro {
      0% {
        transform: rotateX(90deg);
      }

      10% {
        transform: rotateY(90deg);
      }

      20% {
        transform: rotateY(90deg);
      }

      30% {
        transform: rotateZ(90deg);
      }

      40% {
        transform: rotateZ(90deg);
      }

      50% {
        transform: rotateY(90deg);
      }

      60% {
        transform: rotateX(90deg);
      }

      70% {
        transform: rotateX(180deg);
      }

      80% {
        transform: rotateZ(-90deg);
      }

      90% {
        transform: rotateY(-90deg);
      }

      100% {
        transform: rotateY(90deg);
      }
    }

    @keyframes fd {
      50% {
        transform: scale3d(1.5, 1.5, 1.5)
      }
      100% {
        transform: scale3d(1, 1, 1);
      }
    }

    .box .front {
      transform: translateZ(125px);
    }

    .box .back {
      transform: translateZ(-125px) rotateX(180deg);
    }

    .box .up {
      transform: translateY(-125px) rotateX(90deg);
    }

    .box .down {
      transform: translateY(125px) rotateX(-90deg);
    }

    .box .left {
      transform: translateX(-125px) rotateY(-90deg);
    }

    .box .right {
      transform: translate(125px) rotateY(90deg);
    }
    /*  .box .back {
      transform: translateZ(1250px) rotateX(180deg);
    } */
    
    .box {
      animation: ro 9s linear infinite alternate forwards/* , fd 9s 0.2s linear backwards */;
    }
    
    .box:hover {
      animation-play-state: paused;
    }
  </style>
</head>
<body>
  <div class="box">
    <img src="./image/front.jpg" alt="" class="front">
    <img src="./image/back.jpg" alt="" class="back">
    <img src="./image/up.jpg" alt="" class="up">
    <img src="./image/down.jpg" alt="" class="down">
    <img src="./image/left.jpg" alt="" class="left">
    <img src="./image/right.jpg" alt="" class="right">
    </img>
</body>
</html>

效果图

相关推荐
工业3D_大熊3 分钟前
3D可视化引擎HOOPS Luminate场景图详解:形状的创建、销毁与管理
java·c++·3d·docker·c#·制造·数据可视化
旧林8436 分钟前
第八章 利用CSS制作导航菜单
前端·css
asleep7012 小时前
第8章利用CSS制作导航菜单
前端·css
猫爪笔记6 小时前
前端:HTML (学习笔记)【2】
前端·笔记·学习·html
风尚云网7 小时前
风尚云网前端学习:一个简易前端新手友好的HTML5页面布局与样式设计
前端·css·学习·html·html5·风尚云网
佚先森8 小时前
2024ARM网络验证 支持一键云注入引流弹窗注册机 一键脱壳APP加固搭建程序源码及教程
java·html
Myli_ing9 小时前
HTML的自动定义倒计时,这个配色存一下
前端·javascript·html
FØund40410 小时前
antd form.setFieldsValue问题总结
前端·react.js·typescript·html
酷酷的威朗普10 小时前
医院绩效考核系统
javascript·css·vue.js·typescript·node.js·echarts·html5
渊兮兮10 小时前
Vue3 + TypeScript +动画,实现动态登陆页面
前端·javascript·css·typescript·动画