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

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

在本篇文章里小编给大家整理了关于Java脚本语言实现的三维(三维的缩写)旋转魔方动画效果实例代码,有兴趣的朋友们测试下。

JS1K是Java脚本语言编程竞赛——参加竞赛的规则很简单,脚本必须小于1K,竞赛网站开始也只是为了娱乐,却意外地收到了很多优秀的作品。

这是2016年JS1k上传的作品,用几十行代码实现的一个三维(三维的缩写)旋转魔方:

代码如下:

函数z(t,e) {

回t?e?t . appendchild(e):' width:' t ' px;高度:" t "

px;位置:绝对;document.createElement('div ')

}

函数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)',

请求动画帧(w)

}

var a='转换,

p='背景色:',

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]='视角:900 px ' 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 ':平移3d(' 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;边框:4px纯色

#000;不透明度:0.9;a ':' r ' X(' 4n?90 * n : 0)

deg)' r ' Y((4n?0 : 4==n?-90:90)' deg)平移z(40px);'p

(0==n2==k?#05C':1==n0==h?#FD0 ':

2==n0==k?#0A6':3==n2==h?#FFF':4==n0==g?#F60':5==n2==g?# C24 ':' # 000 ');

z(f,e),m.push(f)

}

w();

知识点扩展

射流研究…如何实现旋转的魔方,浏览器从其他标签页回来依然匀速旋转?

!文档类型超文本标记语言

html lang='en '

meta charset='UTF-8 '

meta name=' viewport ' content=' width=device-width,initial-scale=1.0 '

meta http-equiv=' X-UA-Compatible ' content=' ie=edge '

标题文档/标题

/头

身体

div class='cube' onclick='stop()'

div class='front'front/div

div class='back '后退/div

div class='left '左/div

div class='右'右/div

div class='top'top/div

div class='bottom '底部/div

/div

/body

风格。立方体{

宽度:400像素

高度:400像素

转场:全3s;

边距:300像素自动;

/* 作用于所有三维(三维的缩写)转换的子元素设置给父级*/

/*视角:1000像素*/

/*转换:rotateX(30度)罗泰(45度);*/

/* 平面到立方默认值:平面扁平*/

变换样式:保留-3d;

位置:相对;

}

/* div:悬停{

transform:rotateY(90度)translate z(-200像素);

不透明度:0.5;

} */。前面,回来了,左边,对,顶,底部{

宽度:100%;

身高:100%;

文本对齐:居中;

行高:400像素;

位置:绝对;

不透明度:0.9;

左:0;

top:0;

}。正面{

背景色:浅紫色;

背景-图片:URL(' http://img 1。gt img。com/TJ/pics/hv1/117/208/2153/140051982。jpg’);

transform:平移z(200px);

}。后退{

背景色:黄色;

transform:平移z(-200 px);

背景图像:URL(' https://ss 1。BD静态。com/70 cfuxsh _ q 1 ynxgkpowk 1 HF 6 hy/it/u=841408372,3004217725fm=11gp=0。jpg’);

}。左侧{

背景色:粉色;

背景图像:URL(' https://ss 0。BD静态。com/70 cfu HSH _ q 1 ynxgkpowk 1 HF 6 hy/it/u=2388632836,3966607624fm=26gp=0。jpg’);

变换:旋转(90度)平移(-200像素)

}。右{

背景色:黄绿色;

背景图像:URL(' https://ss 0。BD静态。com/70 cfu HSH _ q 1 ynxgkpowk 1 HF 6 hy/it/u=192610795,467565159fm=26gp=0。jpg’);

变换:旋转(90度)平移(200像素)

}。顶部{

背景色:天蓝色;

背景图像:URL(' https://ss 0。BD静态。com/70 cfu HSH _ q 1 ynxgkpowk 1 HF 6 hy/it/u=2936477803,4198185787fm=15gp=0。jpg’);

变换:rotateX(90度)翻译z(200像素)

}。底部{

背景色:橙色;

背景-图片:URL(' http://img 0。电脑小姐。com。cn/PC lady/1611/02/1612285 _ jyz。jpg’);

转换:rotateX(90度)翻译z(-200像素)

}

/风格

脚本

window.onload=function () {

let cube=document.querySelector(' .立方体)

让定时器=空

设x=0;y=0;

函数旋转(){

立方体。风格。transform=' rotateX(' x ' deg)' ' ' ' rotateY(' y ' deg)';

x=30

y=45

}

函数stop() {

清除时间间隔(定时器)

}

间隙(定时器);

timer=setInterval(()={

rotate();

}, 1000);

//监听是否在当前页,并置为已读

//文档。addevent侦听器('可见性更改',函数(){

//if (document.hidden) { //不处于当前页面

////做点什么

//clearInterval(定时器)

//}其他{

//定时器;

//}

//});

var hiddenProperty='hidden '在文档中?"隐藏":

文档中的“webkitHidden”?webkitHidden ':

文档中的《mozHidden》?《mozHidden》:

var visibilityChangeEvent=hidden属性。replace(/hidden/I,“可见性更改”);

var可视性变化=function(){

如果(!文档[hiddenProperty]) {

timer=setInterval(()={

rotate();

}, 1000);

控制台。日志(隐藏属性);

}否则{

清除时间间隔(定时器)

}

}

文档。addevent侦听器(visibilityChangeEvent,onVisibilityChange);

//文档。addevent侦听器('可见性更改',函数(){

//如果(!document.hidden) { //处于当前页面

//timer=setInterval(()={

//rotate();

//}, 1000);

//控制台。日志(“活动”);

//}其他{

//clearInterval(定时器);

//控制台。日志(“隐藏”);

//}

//});

}

/脚本

/html

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: