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>

效果图

相关推荐
Want5958 小时前
HTML音乐圣诞树
前端·html
程序员小寒9 小时前
前端高频面试题之CSS篇(一)
前端·css·面试·css3
我命由我1234511 小时前
微信开发者工具 - 模拟器分离窗口与关闭分离窗口
前端·javascript·学习·微信小程序·前端框架·html·js
我有一棵树12 小时前
file 协议与 http 协议的区别:为什么本地 HTML 无法加载相对路径 JS,以及正确的解决方式
javascript·http·html
棒棒的皮皮13 小时前
【Python】Open3d用于3D测高项目
python·3d·open3d
华仔啊15 小时前
图片标签用 img 还是 picture?很多人彻底弄混了!
前端·html
合作小小程序员小小店16 小时前
网页开发,在线%新版本旅游管理%系统,基于eclipse,html,css,jquery,servlet,jsp,mysql数据库
java·数据库·eclipse·html·intellij-idea·旅游·jsp
风止何安啊16 小时前
收到字节的短信:Trae SOLO上线了?尝尝鲜,浅浅做个音乐播放器
前端·html·trae
fruge16 小时前
低版本浏览器兼容方案:IE11 适配 ES6 语法与 CSS 新特性
前端·css·es6
今日无bug19 小时前
🥁 用 HTML5 打造你的第一个“敲击乐” Web 应用
html