虚位以待,此位置招租
虚位以待,此位置招租
虚位以待,此位置招租
虚位以待,此位置招租
虚位以待,此位置招租
虚位以待,此位置招租
DeepSook聚合登录 阿里云服务器 99元/年 大流量卡 - 免开卡,免运费 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租
输入验证码,即可复制
扫描二维码输入:jiuge,即可获取验证码
只需要3秒时间
返回列表 发布新帖

[代码特效] HTML&CSS :必学!打造 3D 立方体动画

5 0
发表于 昨天 09:06 | 查看全部 阅读模式
这段代码通过纯CSS实现了一个动态的3D立方体动画,立方体在旋转的同时,每个侧面的文字会动态变化位置。整体效果生动有趣,适合用于动画展示或创意页面。

演示效果
ce7bb8f5115e4a96a010676eddc5e521.gif

HTML&CSS

  1. <!DOCTYPE html>
  2. <html lang="zh">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>公众号关注:前端Hardy</title>
  7.     <style>
  8.         body {
  9.             margin: 0;
  10.             padding: 0;
  11.             background: #e8e8e8;
  12.             display: flex;
  13.             align-items: center;
  14.             justify-content: center;
  15.             height: 100vh;
  16.         }

  17.         .scene {
  18.             width: 300px;
  19.             height: 300px;
  20.             margin: 100px auto 0;
  21.             perspective: 1200px;
  22.         }

  23.         .cube {
  24.             position: relative;
  25.             width: 300px;
  26.             height: 300px;
  27.             transform-style: preserve-3d;
  28.             transform: translateZ(-150px) rotateX(0deg);
  29.             animation: example 15s linear infinite;
  30.         }

  31.         .side {
  32.             position: absolute;
  33.             width: 300px;
  34.             height: 300px;
  35.             box-sizing: border-box;
  36.             background-color: #999;
  37.             background-size: 100% 100%;
  38.             background-repeat: no-repeat;
  39.             padding: 120px 0;
  40.             font: 60px/1 'Trebuchet MS', sans-serif;
  41.             color: #fff;
  42.             text-transform: uppercase;
  43.             text-align: center;
  44.         }

  45.         .side::before {
  46.             content: '';
  47.             position: absolute;
  48.             top: 0;
  49.             left: 0;
  50.             width: 100%;
  51.             height: 100%;
  52.             background: rgba(0, 0, 0, 0.15);
  53.         }

  54.         .side span {
  55.             position: relative;
  56.             display: block;
  57.         }

  58.         .back span {
  59.             animation: back 15s linear infinite;
  60.         }

  61.         .top span {
  62.             animation: top 15s linear infinite;
  63.         }

  64.         .bottom span {
  65.             animation: bottom 15s linear infinite;
  66.         }

  67.         .front span {
  68.             animation: front 15s linear infinite;
  69.         }

  70.         .guides {
  71.             position: absolute;
  72.             top: 0;
  73.             left: 50px;
  74.             width: 200px;
  75.             height: 100%;
  76.             border-style: dotted;
  77.             border-width: 0 1px;
  78.             color: rgba(255, 255, 255, 0.6);
  79.         }

  80.         .guides::before {
  81.             content: '';
  82.             position: absolute;
  83.             top: 0;
  84.             left: 50%;
  85.             width: 0;
  86.             height: 100%;
  87.             border-left: 1px dotted;
  88.         }

  89.         .back {
  90.             transform: translateZ(-150px) rotateX(180deg);
  91.         }

  92.         .top {
  93.             transform: translateY(-150px) rotateX(90deg);
  94.         }

  95.         .bottom {
  96.             transform: translateY(150px) rotateX(270deg);
  97.         }

  98.         .front {
  99.             transform: translateZ(150px);
  100.         }

  101.         .back {
  102.             background-image: url(http://askd.rocks/pres/rd-ft/assets/pictures/back.jpg);
  103.         }

  104.         .top {
  105.             background-image: url(http://askd.rocks/pres/rd-ft/assets/pictures/top.jpg);
  106.         }

  107.         .bottom {
  108.             background-image: url(http://askd.rocks/pres/rd-ft/assets/pictures/bottom.jpg);
  109.         }

  110.         .front {
  111.             background-image: url(http://askd.rocks/pres/rd-ft/assets/pictures/front.jpg);
  112.         }

  113.         @keyframes example {
  114.             0% {
  115.                 transform: translateZ(-150px) rotateX(0deg);
  116.             }

  117.             15% {
  118.                 transform: translateZ(-150px) rotateX(90deg);
  119.             }

  120.             25% {
  121.                 transform: translateZ(-150px) rotateX(90deg);
  122.             }

  123.             40% {
  124.                 transform: translateZ(-150px) rotateX(180deg);
  125.             }

  126.             50% {
  127.                 transform: translateZ(-150px) rotateX(180deg);
  128.             }

  129.             65% {
  130.                 transform: translateZ(-150px) rotateX(270deg);
  131.             }

  132.             75% {
  133.                 transform: translateZ(-150px) rotateX(270deg);
  134.             }

  135.             90% {
  136.                 transform: translateZ(-150px) rotateX(360deg);
  137.             }

  138.             100% {
  139.                 transform: translateZ(-150px) rotateX(360deg);
  140.             }
  141.         }

  142.         @keyframes front {
  143.             0% {
  144.                 transform: translateY(0px)
  145.             }

  146.             15% {
  147.                 transform: translateY(-100px);
  148.             }

  149.             25% {
  150.                 transform: translateY(-100px);
  151.             }

  152.             40% {
  153.                 transform: translateY(0px);
  154.             }

  155.             50% {
  156.                 transform: translateY(0px);
  157.             }

  158.             65% {
  159.                 transform: translateY(100px);
  160.             }

  161.             75% {
  162.                 transform: translateY(100px);
  163.             }

  164.             90% {
  165.                 transform: translateY(0px);
  166.             }

  167.             100% {
  168.                 transform: translateY(0px);
  169.             }
  170.         }

  171.         @keyframes bottom {
  172.             0% {
  173.                 transform: translateY(100px)
  174.             }

  175.             15% {
  176.                 transform: translateY(0px);
  177.             }

  178.             25% {
  179.                 transform: translateY(0px);
  180.             }

  181.             40% {
  182.                 transform: translateY(-100px);
  183.             }

  184.             50% {
  185.                 transform: translateY(-100px);
  186.             }

  187.             65% {
  188.                 transform: translateY(0px);
  189.             }

  190.             75% {
  191.                 transform: translateY(0px);
  192.             }

  193.             90% {
  194.                 transform: translateY(100px);
  195.             }

  196.             100% {
  197.                 transform: translateY(100px);
  198.             }
  199.         }

  200.         @keyframes back {
  201.             0% {
  202.                 transform: translateY(0px)
  203.             }

  204.             15% {
  205.                 transform: translateY(100px);
  206.             }

  207.             25% {
  208.                 transform: translateY(100px);
  209.             }

  210.             40% {
  211.                 transform: translateY(0px);
  212.             }

  213.             50% {
  214.                 transform: translateY(0px);
  215.             }

  216.             65% {
  217.                 transform: translateY(-100px);
  218.             }

  219.             75% {
  220.                 transform: translateY(-100px);
  221.             }

  222.             90% {
  223.                 transform: translateY(0px);
  224.             }

  225.             100% {
  226.                 transform: translateY(0px);
  227.             }
  228.         }

  229.         @keyframes top {
  230.             0% {
  231.                 transform: translateY(-100px)
  232.             }

  233.             15% {
  234.                 transform: translateY(0px);
  235.             }

  236.             25% {
  237.                 transform: translateY(0px);
  238.             }

  239.             40% {
  240.                 transform: translateY(100px);
  241.             }

  242.             50% {
  243.                 transform: translateY(100px);
  244.             }

  245.             65% {
  246.                 transform: translateY(0px);
  247.             }

  248.             75% {
  249.                 transform: translateY(0px);
  250.             }

  251.             90% {
  252.                 transform: translateY(-100px);
  253.             }

  254.             100% {
  255.                 transform: translateY(-100px);
  256.             }
  257.         }
  258.     </style>
  259. </head>

  260. <body>
  261.     <div class="scene">
  262.         <div class="cube">
  263.             <div class="side back">
  264.                 <div class="guides"></div>
  265.                 <span>发</span>
  266.             </div>
  267.             <div class="side top">
  268.                 <div class="guides"></div>
  269.                 <span>财</span>
  270.             </div>
  271.             <div class="side bottom">
  272.                 <div class="guides"></div>
  273.                 <span>喜</span>
  274.             </div>
  275.             <div class="side front">
  276.                 <div class="guides"></div>
  277.                 <span>恭</span>
  278.             </div>
  279.         </div>
  280.     </div>
  281. </body>
  282. </html>
复制代码


HTML 结构

scene:整个3D场景的容器,用于设置透视效果(perspective)。
cube:立方体的容器,包含四个侧面(front、back、top、bottom)。
side:立方体的每个侧面,分别表示立方体的前面、后面、顶部和底部。
guides:辅助线,用于指示每个侧面的中心位置。
span:每个侧面的文字内容。

CSS 样式

body:设置页面背景颜色、布局方式(居中对齐)和全屏高度。
.scene:定义3D场景的容器,设置宽高和透视效果。
.cube:定义立方体的样式,包括宽高、3D变换和动画(example)。
.side:定义立方体每个侧面的样式,包括宽高、背景颜色和文字样式。
.side::before:为每个侧面添加半透明的覆盖层,增强视觉效果。
.side span:定义侧面文字的样式,使其居中显示。
.back、.top、.bottom、.front:分别定义立方体的后面、顶部、底部和前面的样式,包括背景图片和3D变换。
.guides:定义辅助线的样式,用于指示每个侧面的中心位置。
@keyframes example:定义立方体的旋转动画,使立方体在X轴上循环旋转。
@keyframes front、@keyframes top、@keyframes bottom、@keyframes back:分别为每个侧面的文字定义动画,使其在立方体旋转时动态变化位置。

免责声明

本社区仅提供信息交流平台,帖子内容由用户自行发布,不代表社区立场。用户对发布内容负全责,包括版权、隐私、诽谤等,社区不承担因使用社区内容导致的损失。禁止发布侵权、隐私信息,发现侵权请联系我们。社区不负责第三方内容,用户因访问第三方内容产生的损失,社区不担责。用户须遵守规则和法律,不得发布违法、不当内容,违规内容将被删除。发表帖子即同意本声明,不同意请勿发帖。


特别提醒:网络空间并非法外之地,请广大用户自觉遵守法律法规,共同营造健康、文明、有序的网络环境。

本社区运营团队

联系我们: 如有疑问或发现违规行为,请联系管理员:kefu@foxccs.com

远方路灯明灭,银河倾斜,一斛星斗洒满天街。

回复

快捷回复: 经历想经历的,成为想成为的 - 九歌社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

投诉/建议联系

foxccs@qq.com

网站内容来源于网络,版权争议与本站无关。
请在下载后的24小时内从您的设备中彻底删除上述内容。

  • QQ交流群
  • 添加微信客服
Copyright © 2004-2025 九歌社区 版权所有 All Rights Reserved.
关灯 在本版发帖
扫一扫添加微信客服
官方QQ交流群
手机扫一扫访问
返回顶部
快速回复 返回顶部 返回列表