js實(shí)現(xiàn)可旋轉(zhuǎn)的立方體模型
這是一個(gè)簡(jiǎn)單的立方體應(yīng)用,他是很多立方旋轉(zhuǎn)變換的基礎(chǔ),例如實(shí)現(xiàn)3D輪播圖的實(shí)現(xiàn)等。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>可旋轉(zhuǎn)立方體效果</title>
<style type="text/css">
*{padding: 0; margin: 0}
img{border: 0}
ul li{list-style: none}
ul{width: 200px; height: 200px; margin: 100px auto;
position: relative; -webkit-transform-style: preserve-3d ;
/* perspective: 100px;*/
}
/*繞中心旋轉(zhuǎn),坐標(biāo)軸會(huì)隨旋轉(zhuǎn)而旋轉(zhuǎn)*/
li{width:200px;height:200px;position:absolute;text-align:center;line-height:200px;font-size:80px;font-weight:bold;color:#fff;}
/*構(gòu)造六個(gè)面*/
li:nth-child(1){background:rgba(255,0,0,1);-webkit-transform:rotateX(90deg) translateZ(100px);}
li:nth-child(2){background:rgba(0,255,255,1);-webkit-transform:rotateX(270deg) translateZ(100px);}
li:nth-child(3){background:rgba(255,0,255,1);-webkit-transform:rotateY(90deg) translateZ(100px);}
li:nth-child(4){background:rgba(0,255,0,1);-webkit-transform:rotateY(270deg) translateZ(100px);}
li:nth-child(5){background:rgba(200,200,0,1);-webkit-transform:translateZ(-100px);}
li:nth-child(6){background:rgba(0,0,255,1);-webkit-transform: translateZ(100px) ;}
.button{
width: 200px; margin: 20px auto;
position: relative;
cursor: pointer;
}
input{
width: 50px; height: 30px;
position: absolute;
cursor: pointer;
}
/*按鈕的絕對(duì)定位*/
input:nth-child(1){left: 100px; top: 0}
input:nth-child(2){left:200px;top:50px;}
input:nth-child(3){left:0px;top:50px;}
input:nth-child(4){left:100px;top:100px;}
input:nth-child(5){left:100px;top:50px;}
</style>
<script type="text/javascript">
window.onload = function () {
var x = 0, y = 0;
var ul = document.getElementById('ul');
var inputs = document.getElementsByTagName('input');
for (var i = 0; i<inputs.length; i++){
inputs[i].onclick = run;
}
function run() {
/*漸變*/
ul.style.webkitTransition = '-webkit-transform 3s linear';
ul.style.oTransition = '-o-transform 3s linear';
ul.style.transition = 'transform 3s linear';
/*旋轉(zhuǎn)的規(guī)則,就是x,y方向的deg改變*/
if(inputs[0]==this){x+=90;}
if(inputs[1]==this){y+=90;}
if(inputs[2]==this){y-=90;}
if(inputs[3]==this){x-=90;}
if (inputs[4] == this){
x = 0; y = 0;
ul.style.webkitTransition = '-webkit-transform .1s linear';
ul.style.oTransition = '-o-transform .1s linear';
ul.style.transition = 'transform .1s linear';
}
ul.style.webkitTransform = 'rotateX(' + x + 'deg) rotateY(' + y + 'deg)';
ul.style.oTransform = 'rotateX(' + x + 'deg) rotateY(' + y + 'deg)';
ul.style.transform = 'rotateX(' + x + 'deg) rotateY(' + y + 'deg)';
}
document.addEventListener('keydown', function(e){
ul.style.webkitTransition='-webkit-transform 3s linear';
switch(e.keyCode){
case 37: y -= 90; //左箭頭
break;
case 38: x += 90; //上箭頭
break;
case 39: y += 90; //下箭頭
break;
case 40: x -= 90; //右箭頭
break;
case 13: x=0; y=0; //回車 (當(dāng)回車時(shí),迅速轉(zhuǎn)回初始狀態(tài))
ul.style.webkitTransition='-webkit-transform 0.1s linear';
break;
}
ul.style.webkitTransform = "rotateX("+x+"deg) rotateY("+y+"deg)"; //變換效果(沿X軸和Y軸旋轉(zhuǎn))
}, false);document.addEventListener("keydown", function (e) {
ul.style.webkitTransition = '-webkit-transform 3s linear';
ul.style.oTransition = '-o-transform 3s linear';
ul.style.transition = 'transform 3s linear';
switch(e.keyCode){
case 37:
}
})
/* function run(){
ul.style.webkitTransition='-webkit-transform 3s linear'; //設(shè)置立方體變換的屬性、持續(xù)時(shí)間、動(dòng)畫類型
if(inputs[0]==this){x+=90;}
if(inputs[1]==this){y+=90;}
if(inputs[2]==this){y-=90;}
if(inputs[3]==this){x-=90;}
if(inputs[4]==this){x=0;y=0; ul.style.webkitTransition='-webkit-transform 0.1s linear';} //當(dāng)點(diǎn)擊重置按鈕時(shí),迅速轉(zhuǎn)回到初始狀態(tài)。
ul.style.webkitTransform = "rotateX("+x+"deg) rotateY("+y+"deg)"; //變換效果(沿X軸和Y軸旋轉(zhuǎn))
}*/
}
</script>
</head>
<body>
<ul id="ul">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
<div class="container">
</div>
<div class="button">
<input type="button" value="上">
<input type="button" value="右">
<input type="button" value="左">
<input type="button" value="下">
<input type="button" value="重置">
</div>
</body>
</html>
- js實(shí)現(xiàn)圖片旋轉(zhuǎn)的三種方法
- JS實(shí)現(xiàn)全景圖效果360度旋轉(zhuǎn)
- 特漂亮的JS圖片排列旋轉(zhuǎn)效果代碼
- 純JS實(shí)現(xiàn)旋轉(zhuǎn)圖片3D展示效果
- JS實(shí)現(xiàn)圖片平面旋轉(zhuǎn)的方法
- three.js實(shí)現(xiàn)圍繞某物體旋轉(zhuǎn)
- javascript橢圓旋轉(zhuǎn)相冊(cè)實(shí)現(xiàn)代碼
- js實(shí)現(xiàn)圖片360度旋轉(zhuǎn)
- js實(shí)現(xiàn)旋轉(zhuǎn)木馬效果
- js實(shí)現(xiàn)3D旋轉(zhuǎn)效果
相關(guān)文章
根據(jù)地區(qū)不同顯示時(shí)間的javascript代碼
根據(jù)地區(qū)不同顯示時(shí)間的javascript代碼...2007-08-08
Echarts柱狀圖實(shí)現(xiàn)同時(shí)顯示百分比+原始值+匯總值效果實(shí)例
echarts是一款功能強(qiáng)大、靈活易用的數(shù)據(jù)可視化庫,它提供了豐富的圖表類型和樣式,包括柱狀圖,這篇文章主要給大家介紹了關(guān)于Echarts柱狀圖實(shí)現(xiàn)同時(shí)顯示百分比+原始值+匯總值效果的相關(guān)資料,需要的朋友可以參考下2024-08-08
JavaScript的9種繼承實(shí)現(xiàn)方式歸納
這篇文章主要介紹了JavaScript的9種繼承實(shí)現(xiàn)方式歸納,本文講解了原型鏈繼承、原型繼承(非原型鏈)、臨時(shí)構(gòu)造器繼承、屬性拷貝、對(duì)象間繼承等繼承方式,需要的朋友可以參考下2015-05-05
JS操作select下拉框動(dòng)態(tài)變動(dòng)(創(chuàng)建/刪除/獲取)
動(dòng)態(tài)創(chuàng)建及刪除select、添加及刪除選項(xiàng)option、獲得選項(xiàng)option的值、獲得選項(xiàng)option的文本等等,感興趣的朋友可以參考下哈2013-06-06
JS將指定的某個(gè)字符全部轉(zhuǎn)換為其他字符實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于JS如何將指定的某個(gè)字符全部轉(zhuǎn)換為其他字符的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Javascript實(shí)現(xiàn)鼠標(biāo)框選操作 不是點(diǎn)擊選取
這篇文章主要介紹了Javascript實(shí)現(xiàn)鼠標(biāo)框選操作,不是點(diǎn)擊選取,利用鼠標(biāo)進(jìn)行框選,感興趣的小伙伴們可以參考一下2016-04-04
js通過window.open(url)下載文件并修改文件名
這篇文章主要給大家介紹了關(guān)于js如何通過window.open(url)下載文件并修改文件名的相關(guān)資料,我們知道下載文件是一個(gè)非常常見的需求,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08
js實(shí)現(xiàn)鼠標(biāo)感應(yīng)圖片展示的方法
這篇文章主要介紹了js實(shí)現(xiàn)鼠標(biāo)感應(yīng)圖片展示的方法,實(shí)例分析了javascript鼠標(biāo)事件及樣式的操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02

