1. 程式人生 > >利用原生js做出拖拽彈射效果

利用原生js做出拖拽彈射效果

var Odiv = document.getElementById('demo'); Odiv.onmousedown = function (e) {//拖拽小物體 clearInterval(this.timer); var event = e || window.event; var disX = event.clientX - this.offsetLeft; var disY = event.clientY- this.offsetTop; var _self = this; var ispeedX = 0; var ispeedY = 0
; var lastX = Odiv.offsetLeft; var lastY = Odiv.offsetTop; document.onmousemove = function (e) {//實時更新當前小物體的位置 event = e || window.event; var newL = event.clientX - disX; var newT = event.clientY - disY; ispeedX = newL - lastX; ispeedY = newT - lastY; lastX = newL; lastY = newT; _self.style.left = newL + 'px'
; _self.style.top = newT + 'px'; } document.onmouseup = function() {//當滑鼠移開時, 觸發事件 document.onmousemove = null;//移除onmousemove事件 document.onmouseup = null; startTSMove(_self, ispeedX, ispeedY); } } function startTSMove (obj, ispeedX, ispeedY) { clearInterval(obj.timer); var
g = 3;//模擬重力加速度 obj.timer = setInterval(function() { ispeedY += g; var newL = obj.offsetLeft + ispeedX; var newT = obj.offsetTop + ispeedY; if(newT >= (document.documentElement.clientHeight - obj.offsetHeight)){ ispeedY *= -1;//每次撞到當前可視區視窗時, 速度變為相反 ispeedX *= 0.8;//每次撞擊模擬動能損失 ispeedY *= 0.8; newT = document.documentElement.clientHeight - obj.offsetHeight; } if(newT < 0){ ispeedY *= -1; ispeedY *= 0.8; newT = 0; } if(newL >= (document.documentElement.clientWidth - obj.offsetWidth)){ ispeedX *= -1; ispeedX *= 0.8; newL = document.documentElement.clientWidth - obj.offsetWidth; } if(newL < 0){ ispeedX *= -1; ispeedX *= 0.8; newL = 0; } if(Math.abs(ispeedX) < 1){ ispeedX = 0 } if(Math.abs(ispeedY) < 1){ ispeedY = 0 } if(ispeedX === 0 && ispeedY === 0 && newT === (document.documentElement.clientHeight - obj.offsetHeight) ){//當停下來時, 清除定時器 console.log('over'); clearInterval(obj.timer); } obj.style.left = newL + 'px';//實時更新當前小物體的位置 obj.style.top = newT + 'px'; }, 30) }

相關推薦

利用原生js做出彈射效果

var Odiv = document.getElementById('demo'); Odiv.onmousedown = function (e) {//拖拽小物體 clearInterval(this.timer); var event = e || window.event;

原生js實現 事件

ons window mov .get end ret htm 坐標 document <!DOCTYPE html> <html> <head> <meta charset="UTF-8">

利用原生js實現輪播圖效果

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>js原生輪播圖</title> <style type="text

js 利用jquery.gridly.js實現並且排序

user push idl osi llb ext true js實現 idt <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> &

JS移動客戶端--觸屏滑動事件及js手機效果

移動端觸屏滑動的效果其實就是圖片輪播,在PC的頁面上很好實現,繫結click和mouseover等事件來完成。但是在移動裝置上,要實現這種輪播的效果,就需要用到核心的touch事件。處理touch事件能跟蹤到螢幕滑動的每根手指。 以下是四種touch事件 touchstart: //手指放到螢幕上

js 滑鼠效果實現

 效果: 原始碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>速表拖拽效果實現</title>

利用原生js實現自定義滾動條(可點選到達,動到達)

1.HTML檔案 div1是滾動條,div2是滾動小球,div3是文字區域容器,div4是文字區域。 <div id="div"> <div id="div1"> <div id="div2"> </div> </div&

js 圖片效果實現

1、前端html排列 <div class="row" id="listing_extra_images" name="TophatterList[extra_images]"> <div class="image_item_content"

利用jQuery UI為CMS網站實現佈局效果,秒殺table佈局

1 實現效果     對於使用過CMS系統製作網站的人應該都清楚,製作網站過程有一個重要的步驟就是製作頁面佈局。目前,實現頁面佈局有兩種方式:table與div。這兩種方式各有其優劣之處。     Table:     優勢:使用簡單,使用表格進行佈局順理成章,概念和效果圖

JSDIV效果

function print(obj) { Bxcn.Dom.html("text",Bxcn.Dom.html("text")+String.prototype.toString.call(obj)); } function println(obj) { Bx

原生js實現動滑塊驗證

cnblogs tcc mvt wms 網站 hnu 按鈕 itl rip 拖動滑塊驗證是現在的網站隨處可見的,各式各樣的拖動法都有。 下面實現的是某寶的拖動滑塊驗證: <!DOCTYPE html> <html lang="en"> <he

效果 第一步 設置 可的屬性 draggable="true" 綁定drag 事件 第二步 設置 放置位置 觸發的事件 dragover 第三步 設置 放置之後 觸發的事件 dragover 下面請看代碼:

存儲 targe 觸發 get tex 一個 func ons *** (function(){ /*-------節點--------*/ var myimg = document.getElementById(‘myimg‘); var dropBox

原生js,實現“返回頂部”效果

display nts top document tag 兼容 name () else html: <span>^</span> css body{ height: 3000px;

js實現

無效 鼠標 sed 添加 知識 方法 tar curl setw 拖拽效果在網站中是很常見的一種效果,其實現原理很簡單,不過其中也隱藏了不少關鍵知識點,比如說焦點丟失問題等。接下來看看具體代碼是怎麽實現的。 css樣式(註意:元素要定位,不然沒有效果) 1 .box {

JS實現小案例

res pan urb posit htm eight || move use <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> &

原生js三種選項卡效果(輪播)

col val 還在 log pla absolut 自動播放 div pac 第三種:定時輪播切換(我這邊定時是2s) <!DOCTYPE html> <html> <head> <meta charset="utf-8"

原生js三種選項卡效果(點擊)

eight void log utf 觸發 nts lin type position 第一種:選項卡單擊點擊切換 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /&g

原生js三種選項卡效果(滑動)

window solid nts html opacity ont cor rip show 第二種:鼠標移入切換效果實現 <!DOCTYPE html> <html> <head> <meta charset

js表格

element borde set clas offset cursor ont sele 分享 html部分 <div id="chenkbox"> <div id="tableSort"> <ol> &l

原生js模擬框選選擇效果

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device