动画2详细解析

定位

1.位移:

css 复制代码
/* 设置景深 */
        perspective: 1000px;
css 复制代码
 /* 设置3d效果 */
        transform-style: preserve-3d;
css 复制代码
 /* 设置旋转 */
        transform: rotateY(75deg);
css 复制代码
  /* 设置过渡 */
        transition: all 2s;
html 复制代码
 <style>
      body {
        /* 设置景深 */
        perspective: 1000px;
        /* 设置3d效果 */
        transform-style: preserve-3d;
      }
      .outer {
        width: 400px;
        height: 400px;
        background: blanchedalmond;
        margin: 50px auto;
        /* 设置景深 */
        perspective: 1000px;
        /* 设置3d效果 */
        transform-style: preserve-3d;
        /* 设置旋转 */
        transform: rotateY(75deg);
      }
      .box {
        width: 100px;
        height: 100px;
        margin: 5px;
        background-color: #bfa;
        /* 设置过渡 */
        transition: all 2s;
      }

      .box1 {
      }
      .outer:hover > .box1 {
        transform: translateZ(100px);
      }

      .box2 {
        background: red;
      }

      .box3 {
        background: green;
      }
    </style>
  </head>
  <body>
    <div class="outer">
      <div class="box box1"></div>
      <div class="box box2"></div>
      <div class="box box3"></div>
    </div>
  </body>

2.旋转

css 复制代码
 /* 设置父元素3d效果 */
        perspective: 1000px;
        transform-style: preserve-3d;
html 复制代码
<style>
      body {
        /* 设置父元素3d效果 */
        perspective: 1000px;
        transform-style: preserve-3d;
      }
      .outer {
        width: 400px;
        height: 400px;
        border: 10px solid rgb(221, 166, 15);
        /* 设置父元素3d效果 */
        perspective: 1000px;
        transform-style: preserve-3d;
        transform: rotateX(75deg);
      }
      .box {
        width: 100px;
        height: 100px;
        margin: 5px;
        background-color: #bfa;
        transition: 1s linear;
      }
      .box2 {
        background: red;
      }

      .box3 {
        background: green;
      }
      .outer:hover > .box1 {
        /* transform: rotateZ(45deg); */
      }
      .outer:hover > .box2 {
        /* transform: rotateX(-45deg); */
      }
      .outer:hover > .box3 {
        transform: rotateY(45deg);
      }
    </style>
  </head>
  <body>
    <div class="outer">
      <div class="box box1">box1</div>
      <div class="box box2">box2</div>
      <div class="box box3">box3</div>
    </div>
  </body>

3.背面是否可见

css 复制代码
 /* 容器:开启3D空间 */
      .card-container {
        width: 200px;
        height: 300px;
        margin: 50px;
        perspective: 1000px; /* 营造3D透视感 */
        display: inline-block;
      }
html 复制代码
<style>
      /* 容器:开启3D空间 */
      .card-container {
        width: 200px;
        height: 300px;
        margin: 50px;
        perspective: 1000px; /* 营造3D透视感 */
        display: inline-block;
      }

      /* 卡片:核心翻转元素 */
      .card {
        width: 100%;
        height: 100%;
        position: relative;
        transition: transform 1s;
        transform-style: preserve-3d; /* 保留3D效果 */
      }

      /* 鼠标悬停时翻转卡片 */
      .card-container:hover .card {
        transform: rotateY(180deg);
      }

      /* 卡片正面和背面 */
      .card-front,
      .card-back {
        width: 100%;
        height: 100%;
        position: absolute;
        top: 0;
        left: 0;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 20px;
        border-radius: 10px;
      }

      .card-front {
        background: #42b983;
        color: white;
      }

      .card-back {
        background: #3498db;
        color: white;
        transform: rotateY(180deg); /* 背面先翻转180°,方便翻转后显示 */
      }

      /* 案例1:背面可见(默认) */
      .demo1 .card-front,
      .demo1 .card-back {
        backface-visibility: visible;
      }

      /* 案例2:背面隐藏(实用场景) */
      .demo2 .card-front,
      .demo2 .card-back {
        backface-visibility: hidden;
      }
    </style>
  </head>
  <body>
    <!-- 案例1:backface-visibility: visible(背面可见) -->
    <div class="card-container demo1">
      <div class="card">
        <div class="card-front">正面</div>
        <div class="card-back">背面</div>
      </div>
    </div>

    <!-- 案例2:backface-visibility: hidden(背面隐藏) -->
    <div class="card-container demo2">
      <div class="card">
        <div class="card-front">正面</div>
        <div class="card-back">背面</div>
      </div>
    </div>
  </body>
相关推荐
counterxing1 小时前
我整理了一个免费开发资源目录,还做成了 CLI 和 MCP
前端·agent·ai编程
子兮曰8 小时前
Bun v1.3.14 深度解析:Image API、HTTP/3、全局虚拟存储与五十项变革
前端·后端·bun
kyriewen9 小时前
今天,百年巨头一次砍了9200人,而一个离职科学家的实话让全网睡不着觉
前端·openai·ai编程
问心无愧05139 小时前
ctf show web 入门42
android·前端·android studio
kyriewen9 小时前
老板逼我上AI,我偷偷在浏览器里跑LLaMA,省下20万API费
前端·react.js·llm
Beginner x_u10 小时前
前端八股整理(手写 02)|数组转树、数组扁平化、随机打乱一个数组
前端·数组·数组转树·数组扁平化
KaMeidebaby10 小时前
卡梅德生物技术快报|禽类成纤维细胞 FISH 实验:鸟类性别染色体基因定位技术实现与数据验证
前端·数据库·其他·百度·新浪微博
天若有情67310 小时前
前端高阶性能优化:跳出传统懒加载与预加载,基于用户行为做轻量预判加载
前端·性能优化
小小小小宇10 小时前
前端转后端:SQL 是什么
前端
张元清11 小时前
React Observer Hooks:7 种监听 DOM 而不写样板代码的方式
前端·javascript·面试