JavaScript实现的3D旋转魔方动画效果实例代码
前端  /  管理员 发布于 3年前   190
JS1K是JavaScript编程竞赛――参加竞赛的规则很简单,脚本必须小于1K,竞赛网站开始也只是为了娱乐,却意外地收到了很多优秀的作品。
这是2016年JS1k上传的作品,用几十行代码实现的一个3D旋转魔方:
代码如下:
function z(t, e) { return t? e? t.appendChild(e) : "width:"+t+"px;height:"+t+"px;position:absolute;" : document.createElement("div")}function w() { ++t==360&&(t=0, x=++x%3) for (i in m) 2 == m[i][s[x]] ? m[i][u][a] = r+s[x]+"(" + t + "deg)" : 0; c[u][a] = r+"3d(1,1,1," + t + "deg)", requestAnimationFrame(w)}var a = "transform",p = "background-color:",y = a+"-style:preserve-3d;", u = "style", v = "cssText", B = z(), c = z(), t = x = 0, d, e, f, g, h, k, l, m = [], n, i, r="rotate", s = ["X","Y","Z"];B[u][v] = "perspective:900px;"+z(600)+p+"#666";c[u][v] = y + z(240) +"top:30%;left:30%", z(B, c), z(window.b, B);for (l = 27; l--; z(c, f)) { f = z(), f[u][v] = y + z(240), f.X = g = l % 3, f.Y = h = (l - g) % 9 / 3, f.Z = k = ~~(l / 9), e = z(), e[u][v] = y + z(80) +a+":translate3d(" + 80 * g + "px," + 80 * h + "px," + 80 * (k-1) + "px)"; for (n = 6; n--; z(e, d)) d = z(), d[u][v] = y + z(72) + "border-radius:9px;border:4px solid #000;opacity:0.9;"+a+":"+r+"X(" + (4 > n ? 90 * n : 0) + "deg)"+r+"Y(" + (4 > n ? 0 : 4 == n ? -90 : 90) + "deg)translateZ(40px);"+p+ (0==n&&2==k?"#05C":1==n&&0==h?"#FD0": 2==n&&0==k?"#0A6":3==n&&2==h?"#FFF":4==n&&0==g?"#F60":5==n&&2==g?"#C24":"#000"); z(f, e), m.push(f)}w();
知识点扩展
JS如何实现旋转的魔方,浏览器从其他标签页回来依然匀速旋转?
Document frontbackleftrighttopbottom您可能感兴趣的文章:
- 原生javascript+css3编写的3D魔方动画旋扭特效
Top
- 相关文章
- 使用 Alpine.js 排序插件对元素进行排序(0个评论)
- 在js中使用jszip + file-saver实现批量下载OSS文件功能示例(0个评论)
- 在vue中实现父页面按钮显示子组件中的el-dialog效果(0个评论)
- 使用mock-server实现模拟接口对接流程步骤(0个评论)
- vue项目打包程序实现把项目打包成一个exe可执行程序(0个评论)
- 近期文章
- Energy GUI桌面应用开发之js和go之间交互示例(0个评论)
- 在go语言中gin + gorm多表关联实现一个店铺商品搜索功能示例(0个评论)
- 在go语言中gin + gorm实现一个店铺关注/取消关注的功能示例(0个评论)
- 2024年五一假期安排和今年的重要事件回顾(0个评论)
- 在go语言中实现生成文件的MD5校验和、生成文件的校验和(0个评论)
- 使用 Alpine.js 排序插件对元素进行排序(0个评论)
- 2024/4/28最新免费公益节点SSR/V2ray/Shadowrocket/Clash节点分享|科学上网|免费梯子(0个评论)
- Laravel 11.5版本发布-匿名事件广播(0个评论)
- Windows 10的告别:2025年10月14日,一段时代的终结(0个评论)
- windows10系统种go + gin项目编译打包及部署至线上Ubuntu服务器中(0个评论)
- 近期评论
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号