js運動
在CSS3中,我們可以通過新增的過渡效果<code>[transition]</code>來實現運動效果,當然也可以通過js來模擬出來。
勻速運動
與之前的拖拽不同,拖拽是要跟蹤滑鼠的位置。而js運動效果主要通過定時器<code>[setInterval]</code>每次增加一個距離來模擬運動效果,但相同的是它們都需要開啟定位<code>[position]</code>屬性,改變<code>[top]</code>值、以及<code>[left]</code>值進行移動。
![912092-af2a6abac2837808.gif](https://i.iter01.com/images/aaf25f40272eb38067244c5b49239fad8dbb512cf6c9ce56b0b66975e47214f5.gif)
oDiv.onclick = function() {
clearInterval(timer); //每次點選按鈕,清除前面的定時器
timer = setInterval(function() {
if (oDiv.offsetLeft > 600) {
speed = -speed;
}
if (oDiv.offsetLeft == 600) {
clearInterval(timer);
} else {
oDiv.style.left = oDiv.offsetLeft + speed + 'px';
}
}, 30);
}
定時器有開啟,就必須要關閉,否則影響的就是記憶體。
<code>[clearInterval(timer)]//每次點選按鈕,清除前面的定時器</code>如果沒有這一句,在移動過程中的點選會再疊加一次。
![912092-564fc2b7041ad507.gif](https://i.iter01.com/images/237cbdc5c2066de30b93aad47c8d8a3293f888f9ca7d9ddbb02b42d63427b8e9.gif)
上個例子中,我們並未限制它的移動範圍,所以它會移出頁面。
將<code>oDiv.offsetLeft + speed</code>的範圍限制在0到頁面的可視區的寬度;當然這個碰撞的效果還增加的高度的屬性。
在實際的應用中,我們很少用到勻速運動,主要因為它並沒有什麼變化。
緩衝運動
![912092-9502cb0f3eebb8b5.gif](https://i.iter01.com/images/4ebb88a739c2b42aa2fd8bf8ee40d6451ff5bf9dd0fce1f01880dcf2e185ce39.gif)
我們可以明顯的感覺到它與勻速運動的區別。越靠近目標,速度越小,直到降至0為止;
將勻速運動中的speed變數賦值為<code>600-oDiv.offsetLeft)/7</code>其中600,就是我們的目標位置,而7就是一個比例。
定點拋物線
![912092-693abd50a3a7e7f0.gif](https://i.iter01.com/images/78d75fffc57fd52472d41853d5b14b08c6cd4f0f835fe32b876a49f9c18c779c.gif)
主要運用了數學中的公式:
<code>y = ax^2 + bx+c</code>
我們假設x,y都為0;即拋物線在中心點,那麼c就為0:
<code>y = ax^2 + bx</code>
因為在頁面中我們知道x,y的起始位置,以及定點位置;然後自定義一個a<code>拋物線開口大小</code>最後就可以求得b的值;
<code>b=(y-ax^2)/x</code>
最終位移的距離就是:
<code>oDiv1.style.left=current.x + x+'px';
oDiv1.style.top=current.y+(aMath.pow(x,2)+bx)+'px';</code>
實際案例
![912092-93addf0cb0ace353.gif](https://i.iter01.com/images/00c4feb97cd4c5684c3f6c055f808730b1371c70ed63935c5b885808db43856f.gif)
![912092-ee0bb16b6cd268f3.gif](https://i.iter01.com/images/992c0494df0a268a8d33291a413677a73be9a3ddda01cb7eee01932259c765db.gif)
相關文章
- js動畫 Css提供的運動 js提供的運動JS動畫CSS
- js模擬拋物運動和慣性運動JS
- js運算子JS
- js運算子 “==” 與 “===”JS
- js相等運算子JS
- 原生js實現一個DIV的碰撞反彈運動JS
- js中的運算子JS
- 巧用JS位運算JS
- JS錯誤記錄 – 右側懸浮框 – 緩衝運動JS
- JS-11 運算子之布林運算子JS
- JS加法運算全解析JS
- JS中的位運算JS
- js中棧的運用JS
- JS-7 typeof 運算子JS
- 同時運動 + 鏈式運動
- JS 中的邏輯運算子JS
- JS物件操作(in、instanceof、delete)運算子JS物件delete
- 運動控制
- js 方法(運算元組為主JS
- 你真的瞭解js運算子嗎JS
- js中的|與 && 運算子詳解JS
- js中 ~(按位非)運算子妙用JS
- 位運算子在JS中的妙用JS
- JavaScript 2.3 js之||、&&、|、&、三目運算子JavaScriptJS
- JS 邏輯運算子的特點JS
- 移動機器人運動規劃及運動模擬機器人
- JS原生互動JS
- IT運維之自動化運維運維
- JavaScript運動框架JavaScript框架
- 運動與健康
- JS基礎入門篇(七)—運算子JS
- 【自動駕駛】運動控制自行車模型運動規律圖解自動駕駛模型圖解
- arcgis js:動態引入js、css依賴JSCSS
- js 聯通、移動、電信運營商大資料精準營銷獲客JS大資料
- js 與WKWebView 互動JSWebView
- 動手寫 js 沙箱JS
- js二級聯動JS
- Android webview JS 互動AndroidWebViewJS
- js 和 css動畫JSCSS動畫