javascript 3D旋轉滾動效果
本章節分享一段程式碼例項,它使用javascript實現了3D滾動效果。
由於裡面涉及到不少的數學知識,這裡就不介紹了,其實就從本身javascript知識來講並不困難。
感興趣的朋友可以做一下參考,程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> #show{ position:relative; margin:20px auto; width:800px; border:1px solid #999999; } .item{ position:absolute; height:40px; width:60px; background:#999999; border:1px solid #eeeeee; cursor:pointer; } </style> <script> var len; var showerObj; var listObj; var showerWidth = 800; var showerHeight = 400; var r; var cR = 0; var ccR = 0; var timer = 0; window.onload = function () { showerObj = document.getElementById("show"); listObj = showerObj.getElementsByTagName("div"); len = listObj.length; r = Math.PI / 180 * 360 / len; for (var i = 0; i < len; i++) { var item = listObj[i]; item.style.top = showerHeight / 2 + Math.sin(r * i) * showerWidth / 2 - 20 + "px"; item.style.left = showerWidth / 2 + Math.cos(r * i) * showerWidth / 2 - 30 + "px"; item.rotate = (r * i + 2 * Math.PI) % (2 * Math.PI); item.onclick = function () { cR = Math.PI / 2 - this.rotate; timer || (timer = setInterval(rotate, 10)); } } var rX = showerObj.offsetLeft + showerWidth / 2; var ry = showerObj.offsetTop + showerHeight / 2; var rotate = function () { ccR = (ccR + 2 * Math.PI) % (2 * Math.PI); if (cR - ccR < 0) cR = cR + 2 * Math.PI; if (cR - ccR < Math.PI) { ccR = ccR + (cR - ccR) / 19; } else { ccR = ccR - (2 * Math.PI + ccR - cR) / 19; } if (Math.abs((cR + 2 * Math.PI) % (2 * Math.PI) - (ccR + 2 * Math.PI) % (2 * Math.PI)) < Math.PI / 720) { ccR = cR; clearInterval(timer); timer = 0; } for (var i = 0; i < len; i++) { var item = listObj[i]; var w, h; var sinR = Math.sin(r * i + ccR); var cosR = Math.cos(r * i + ccR); w = 60 + 0.6 * 60 * sinR; h = (40 + 0.6 * 40 * sinR); item.style.cssText += ";width:" + w + "px;height:" + h + "px;top:" + parseInt(showerHeight / 2 + sinR * showerWidth / 2 / 3 - w / 2) + "px;left:" + parseInt(showerWidth / 2 + cosR * showerWidth / 2 - h / 2) + "px;z-index:" + parseInt(showerHeight / 2 + sinR * showerWidth / 2 / 3 - w / 2) + ";"; } } document.getElementById("l").onclick = function () { cR = (cR + r + 2 * Math.PI) % (2 * Math.PI); timer || (timer = setInterval(rotate, 10)); } document.getElementById("r").onclick = function () { cR = (cR - r + 2 * Math.PI) % (2 * Math.PI); timer || (timer = setInterval(rotate, 10)); } rotate(); } </script> </head> <body> <input id="l" type="button" value="left" > <input id="r" type="button" value="right" > <div id="show"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> <div class="item">4</div> <div class="item">5</div> <div class="item">6</div> <div class="item">7</div> <div class="item">8</div> <div class="item">9</div> <div class="item">0</div> <div class="item">a</div> <div class="item">b</div> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> </div> </body> </html>
相關文章
- javascript元素3D旋轉效果程式碼例項JavaScript3D
- CSS 3D旋轉效果CSS3D
- js和css3實現360旋轉滾動效果JSCSSS3
- 3D旋轉效果程式碼例項3D
- CSS3 3d旋轉魔方效果CSSS33D
- 簡單的css3頭像旋轉與3D旋轉效果CSSS33D
- three.js實現的3D球狀拖動旋轉效果JS3D
- CSS3立方體3D旋轉效果CSSS33D
- CSS3實現的3D旋轉效果CSSS33D
- three.js實現的地球3D旋轉效果JS3D
- 主題:幾個炫酷的3D旋轉動態效果(附程式碼)3D
- jquery 感應滑鼠移動的文字3d滾動效果jQuery3D
- css3實現的3D立體旋轉效果CSSS33D
- css3實現的立方體3D旋轉效果CSSS33D
- 卡片旋轉動畫效果動畫
- | / - 的旋轉效果實現(轉)
- 隱藏滾動條保留滾動效果
- javascript仿新浪微博圖片放大縮小及旋轉效果JavaScript
- 影像平滑滾動效果的VC實現 (轉)
- iOS實現3D旋轉iOS3D
- canvas旋轉太極圖效果Canvas
- CSS3 旋轉魔方效果CSSS3
- Flash遮罩做地球旋轉效果遮罩
- 原生javascript實現的水平圖片無縫滾動效果JavaScript
- javascript模擬實現滾動條效果程式碼例項JavaScript
- 按鈕滾動條效果
- 如何實現圖片的3D旋轉,而且是不停旋轉?3D
- CSS3圖片旋轉效果CSSS3
- CSS3多面體旋轉效果CSSS3
- CSS3星系旋轉效果代CSSS3
- SVG實現的圓環旋轉效果SVG
- jQuery圖片放大和旋轉效果jQuery
- 【譯】定製Flutter滾動效果Flutter
- 前端實現文字滾動效果前端
- CSS完成視差滾動效果CSS
- CSS水平無縫滾動效果CSS
- 文字垂直迴圈滾動效果
- 3D旋轉矩陣的推導3D矩陣