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>
相關文章
- 卡片旋轉動畫效果動畫
- 簡單的css3頭像旋轉與3D旋轉效果CSSS33D
- 頁面旋轉動畫效果動畫
- CSS3立方體3D旋轉效果CSSS33D
- Android SeekBar 自定義thumb,thumb旋轉動畫效果Android動畫
- 隱藏滾動條保留滾動效果
- CSS3多面體旋轉效果CSSS3
- 滑鼠懸浮圖片旋轉效果
- CSS3星系旋轉效果代CSSS3
- CSS3圖片旋轉效果CSSS3
- CSS3旋轉載入等待效果CSSS3
- 滑鼠懸浮div實現旋轉效果
- CSS3地月星系旋轉效果CSSS3
- 滑鼠懸浮電風扇旋轉效果
- 圓角頭像加360旋轉效果
- js控制專輯圖片旋轉效果JS
- 微信小程式有旋轉動畫效果的音樂元件微信小程式動畫元件
- 直播app系統原始碼,圖片Loading旋轉動畫效果APP原始碼動畫
- 3D旋轉矩陣的推導3D矩陣
- CSS3旋轉風車效果程式碼CSSS3
- CSS3滑鼠懸浮div旋轉效果CSSS3
- 滑鼠懸浮實現環形旋轉效果
- CSS3旋轉效果程式碼例項CSSS3
- HTML+CSS實現太極旋轉效果HTMLCSS
- CSS水平無縫滾動效果CSS
- 【譯】定製Flutter滾動效果Flutter
- 前端實現文字滾動效果前端
- CSS完成視差滾動效果CSS
- CSS3動畫(360度旋轉、旋轉放大、放大、移動)CSSS3動畫
- 讓互動更加生動!有意思的滑鼠跟隨 3D 旋轉動效3D
- JavaScript 頁面跳轉效果JavaScript
- SVG矩形旋轉動畫SVG動畫
- jQuery環形旋轉載入進度條效果jQuery
- CSS3旋轉大風車效果詳解CSSS3
- vue 數字滾動遞增效果Vue
- jQuery圖片無縫滾動效果jQuery
- jQuery滑動方式上下左右滾動效果jQuery
- [轉]旋轉矩陣:點旋轉和座標系旋轉矩陣
- 超級炫酷的3D旋轉動態圖——Python程式碼實現3DPython