40行JavaScript代码实现的3D旋转魔方动画效果


发布者 ourjs  发布时间 1509929950688
关键字 JS开源  JavaScript 
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();

作品地址 http://js1k.com/2016-elemental/demo/2611





回复 (6)
微信扫码 立即评论




 热门文章 - 分享最多
  1. WordPress、百度宣布停止使用React(Native)开源项目,Facebook开源专利许可潜在的法律风险
  2. 阿里涉嫌抄袭创业公司产品:在今天这个故事里,阿里巴巴就是四十大盗
  3. 从 Node 到 Go:一个粗略的比较—GO平均性能比JavaScript快十几倍
  4. 迫于社区压力:React(Native)16将更换成MIT开源协议
  5. Node.JS中如何快速扫描端口并发现局域网内的Web服务器地址(80)
  6. Node也许不是构建大型服务的最佳选择—Node之父Ryan Dahl访谈录
  7. GitHub2017年度开发者报告 JavaScript依然遥遥领先Python突飞猛进
  8. 垄断"开源硬件"树莓派芯片的供应商博通要收购高通了
  9. 招聘前端工程师
  10. 【干货】扫描识别控件Dynamic Web TWAIN在线示例汇总

 相关阅读
  1. JavaScript条形码生成和扫码识别(Barcode scan)开源库
  2. Github Pages疑似被封: 再也不能用Pages搭建个人博客了
  3. Google Cloud宣布加入NodeJS基金会
  4. 【数据可视化】基础知识贴:10大关键术语
  5. 使用React提高Angular的渲染性能(译)
  6. NodeJS将有望使用微软的ChakraCore JavaScript引擎驱动
  7. 轻量级的可调视图和面板分栏Layout布局工具[开源]
  8. HTML5相关格式转换提供商对比—选择困难户的专属福利来啦!
  9. 从React到Domcom: 一个提供DOM部件的web框架
  10. Stop-Server:用手机关闭你的电脑

  开源的 OurJS
OurJS开源博客已经迁移到 OnceOA 平台。

  关注我们
扫一扫即可关注我们:
OnceJS

OnceOA