JavaScript元素上下彈性運動
分享一段程式碼例項,它實現了元素上下彈性運動效果,類似於一個小球能夠上下彈動的現象。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> body { margin: 0; padding: 0; } #box { width: 50px; height: 50px; background: red; position: absolute; left: 0; top: 0; margin: 0; } </style> <script> window.onload = function() { oDiv = document.getElementById('box'); var l = 0; var t = 0; var ispeedX = 0; var ispeedY = 0; var timer = null; oDiv.onmousedown = function(ev) { clearInterval(timer); var ev = ev || event; var disX = ev.clientX - oDiv.offsetLeft; var disY = ev.clientY - oDiv.offsetTop; document.onmousemove = function(ev) { var ev = ev || event; oDiv.style.left = ev.clientX - disX + 'px'; oDiv.style.top = ev.clientY - disY + 'px'; ispeedX = oDiv.offsetLeft - l; ispeedY = oDiv.offsetTop - t; l = oDiv.offsetLeft; t = oDiv.offsetTop; } //onmousemove document.onmouseup = function() { document.onmousemove = null; clearInterval(timer); boomMove(oDiv); function boomMove(obj) { var clientX = document.documentElement.clientWidth - obj.offsetWidth || document.body.clientWidth - obj.offsetWidth; var clientY = document.documentElement.clientHeight - obj.offsetHeight || document.body.clientHeight - obj.offsetHeight; timer = setInterval(function() { ispeedY += 3; var x = obj.offsetLeft + ispeedX; var t = obj.offsetTop + ispeedY; if (x > clientX) { x = clientX; ispeedX *= -1; }; if (x < 0) { x = 0; ispeedX *= -1; }; if (t > clientY) { t = clientY; ispeedY *= -0.8; ispeedX *= 0.9; }; if (t < 0) { t = 0; ispeedY *= -1 }; obj.style.left = x + 'px'; obj.style.top = t + 'px'; if (Math.abs(ispeedX) < 1) { ispeedX = 0; }; if (Math.abs(ispeedY) < 1) { ispeedY = 0; }; if (ispeedX == 0 && ispeedY == 0 && oDiv.offsetTop == clientY) { clearInterval(timer); } }, 30); } } } } </script> </head> <body> <div id="box"></div> </body> </html>
相關文章
- recyclerview 彈性滑動 + 中間元素放大View
- JavaScript元素抖動效果JavaScript
- JavaScript動態新增li元素JavaScript
- JavaScript之多小球非對心彈性碰撞JavaScript
- JavaScript設定元素float浮動JavaScript
- JavaScript 拖動調整元素尺寸JavaScript
- iOS textField鍵盤彈出/收起 自動上下移iOS
- JavaScript運動框架JavaScript框架
- 動態生成HTML元素併為元素追加屬性HTML
- JavaScript拖動調整元素的尺寸JavaScript
- JavaScript 動態新增與刪除元素JavaScript
- JavaScript 緩衝運動JavaScript
- JavaScript數字上下翻動變化詳解JavaScript
- JavaScript動態新增或者刪除HTML元素JavaScriptHTML
- JavaScript動態新增和刪除div元素JavaScript
- JavaScript動態設定元素背景圖片JavaScript
- JavaScript 動畫方式彈出圓角框JavaScript動畫
- javascript 多物體運動JavaScript
- JavaScript 元素集合JavaScript
- 彈性架構設計之運維技術棧架構運維
- 深入淺出 OceanBase 運維之彈性擴縮容運維
- JavaScript經典案例:鍵盤控制元素移動JavaScript
- JavaScript五:全域性變數&區域性變數;運算子JavaScript變數
- 原生JavaScript之完美運動框架JavaScript框架
- js模擬拋物運動和慣性運動JS
- 讓View具有彈性效果的動畫——SpringAnimationView動畫Spring
- JavaScript運動框架程式碼例項JavaScript框架
- JavaScript獲取父元素下子元素節點JavaScript
- JavaScript元素集合介紹JavaScript
- 原生JavaScript運動功能系列(四):多物體多值鏈式運動JavaScript
- OverScroll彈性滾動和慣性滾動效果的實現原理——CoordinatorLayout+Behavior
- JavaScript與CSS3動畫方式改變元素尺寸JavaScriptCSSS3動畫
- RocketMQ彈性HAMQ
- flex 彈性盒子Flex
- 【新彈性盒】
- 彈性盒子flexFlex
- JavaScript 之執行上下文JavaScript
- 解密JavaScript執行上下文解密JavaScript