正方体翻滚Loading 2.0

说在前面

前面实现了一个 正方体翻滚Loading 1.0 版本

看久了觉得原地翻滚有点没意思了,不如让它左右滚动起来

效果展示

codepen

在线体验codepen.io/yongtaozhen...

码上掘金

在线体验code.juejin.cn/pen/7639379...

关键改动代码

1.容器变宽,给横向运动留空间

2.0 要让方块左右跑,容器宽度肯定得比 1.0 大。

css 复制代码
.loader {
  position: relative;
  width: 300px;
  height: 218px;
  perspective: 880px;
  isolation: isolate;
}

.cube {
  position: absolute;
  left: 50%;
  bottom: 64px;
  width: 72px;
  height: 72px;
  margin-left: -36px;
  transform-style: preserve-3d;
  transform: translateX(-100px) translateY(0px) rotateX(-8deg)
    rotateY(8deg) rotateZ(0deg);
}

这里的关键是 translateX(-100px) 作为起点,让方块从左侧出发。

2.一个关键帧写完整"去程 + 回程"

0%~50% 作为去程,50%~100% 作为回程。

css 复制代码
@keyframes roll-commute {
  0% {
    transform: translateX(-100px) translateY(0px) rotateX(-8deg)
      rotateY(8deg) rotateZ(0deg);
  }
  25% {
    transform: translateX(0px) translateY(0px) rotateX(-8deg)
      rotateY(8deg) rotateZ(180deg);
  }
  50% {
    transform: translateX(100px) translateY(0px) rotateX(-8deg)
      rotateY(8deg) rotateZ(360deg);
  }
  75% {
    transform: translateX(0px) translateY(0px) rotateX(-8deg)
      rotateY(8deg) rotateZ(180deg);
  }
  100% {
    transform: translateX(-100px) translateY(0px) rotateX(-8deg)
      rotateY(8deg) rotateZ(0deg);
  }
}

6.25% 一档的细分节点(每次抬起是 translateY(-14px)),这样滚动不是"滑行",而是明显的"翻面跳跃感"。

3.阴影跟着走

css 复制代码
@keyframes shadow-sync {
  0% { transform: translateX(-100px) scaleX(0.9); opacity: 0.5; }
  25% { transform: translateX(0px) scaleX(0.9); opacity: 0.5; }
  50% { transform: translateX(100px) scaleX(0.9); opacity: 0.5; }
  75% { transform: translateX(0px) scaleX(0.9); opacity: 0.5; }
  100% { transform: translateX(-100px) scaleX(0.9); opacity: 0.5; }
}

然后再叠一层 contact-shadow(接触阴影),在抬起节点压低透明度,就会有"离地-落地"的重量反馈。

源码地址

gitee

源码地址gitee.com/zheng_yongt...

github

源码地址github.com/yongtaozhen...

🌟 觉得有帮助的可以点个 star~

🖊 有什么问题或错误可以指出,欢迎 pr~

📬 有什么想要实现的功能或想法可以联系我~

公众号

关注公众号『 前端也能这么有趣 』,获取更多有趣内容。 发送 加群 还可以加入群聊,一起来学习(摸鱼)吧~

说在后面

🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『前端也能这么有趣』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。

相关推荐
llq_3501 小时前
React 组件处理 Props
前端
夫子3961 小时前
多人协同后内容丢失?一文搞懂ONLYOFFICE document.key的正确用法
前端
张元清1 小时前
React 与用户偏好:尊重用户已经在 OS 里设过的那些选项
前端·javascript·面试
RPGMZ1 小时前
RPGMZ 游戏场景全局提示框 带三秒隐藏插件
前端·javascript·游戏·rpgmz
宠..1 小时前
VS Code 修改 C++ 标准同时修改错误检测标准
java·linux·开发语言·javascript·c++·python·qt
JarvanMo1 小时前
2026年最佳Flutter图标包
前端
Arthur14726122865471 小时前
Vue Query 缓存机制实战:别再让 gcTime 和 staleTime 背锅了
前端
Rkgua1 小时前
React中的赋值操作为什么不是=?
前端·javascript
heyCHEEMS1 小时前
记录一个 React 表单的小坑:缓存节流导致页面刷新
前端·javascript