动画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>
相关推荐
明月_清风20 分钟前
自定义右键菜单:在项目里实现“选中文字即刻生成新提示”
前端·javascript
明月_清风20 分钟前
告别后端转换:高质量批量导出实战
前端·javascript
刘发财5 小时前
弃用html2pdf.js,这个html转pdf方案能力是它的几十倍
前端·javascript·github
牛奶7 小时前
2026年大模型怎么选?前端人实用对比
前端·人工智能·ai编程
牛奶7 小时前
前端人为什么要学AI?
前端·人工智能·ai编程
Kagol10 小时前
🎉OpenTiny NEXT-SDK 重磅发布:四步把你的前端应用变成智能应用!
前端·开源·agent
GIS之路11 小时前
ArcGIS Pro 中的 notebook 初识
前端
JavaGuide11 小时前
7 道 RAG 基础概念知识点/面试题总结
前端·后端
ssshooter12 小时前
看完就懂 useSyncExternalStore
前端·javascript·react.js
格砸12 小时前
从入门到辞职|从ChatGPT到OpenClaw,跟上智能时代的进化
前端·人工智能·后端