原生JS拖拽效果
很多時候我們做網站都會遇到 JS拖拽的需求,今天就按照一個彈出框拖拽作為一個小案例寫個JS原生的程式碼。
按照上面的需求我們們開始製作一個拖拽效果吧。
第一步、我們們得寫一個佈局和響應的css
<div id="box"> <div id="btn">標題</div> <p>青格勒前端部落格!</p> <p>www.cenggel.com</p></div>
<style> #box{ height:200px; width:200px; background:#999; position:absolute;} #btn{ height:30px; background:#000; cursor:all-scroll; padding:0 10px; color:#fff;}</style>
這裡的話我們們id=btn的為拖拽的區域。
二、邏輯講述
整個JS程式碼不是很多,當滑鼠按下的時候獲取滑鼠的位置和id=box的上距和左邊距,然後計算目前的位置。
然後這時候滑鼠移動的時候再次計算滑鼠的位置,然後給id=box位置
當滑鼠按鈕鬆開的時候把onmousemove和onmouseup清除掉
三、JS程式碼部分
<script type="text/javascript"> function drag(obtnf,obtn){ //按鈕及初始值 var obtn = document.getElementById(obtn), obtnf = document.getElementById(obtnf), disX = 0, disY = 0; //滑鼠按下時開始計算 obtn.onmousedown = function(ev){ var ev = ev || window.event; disX = ev.clientX - obtnf.offsetLeft; disY = ev.clientY - obtnf.offsetTop; //滑鼠按下並移動時計算 document.onmousemove = function(ev){ var ev = ev || window.event; obtnf.style.left = ev.clientX - disX + 'px'; obtnf.style.top = ev.clientY - disY + 'px'; }; //滑鼠鬆開時清除時間 document.onmouseup = function(){ document.onmousemove = null; document.onmouseup = null; }; return false; }; }; //引用 drag("box","btn")</script> www.gendan5.com
最後我們們的效果如下
做到這裡其實我們們的效果並不完美,應為當我們拖拽的時候發現,他能直接被拖到瀏覽器的外面去了,所以我們們再給他加點限制。
最終JS程式碼如下:
<script type="text/javascript"> function xianzhi(val,max,min){ if (val > max){ return max; }else if(val < min){ return min; }else{ return val; } console.log(val) } function drag(obtnf,obtn){ //按鈕及初始值 var obtn = document.getElementById(obtn), obtnf = document.getElementById(obtnf), disX = 0, disY = 0; //滑鼠按下時開始計算 obtn.onmousedown = function(ev){ var ev = ev || window.event; disX = ev.clientX - obtnf.offsetLeft; disY = ev.clientY - obtnf.offsetTop; //滑鼠按下並移動時計算 document.onmousemove = function(ev){ var ev = ev || window.event; var lefts= (ev.clientX - disX), tops= (ev.clientY - disY), maxle= (document.documentElement.clientWidth - obtnf.offsetWidth), maxto= (document.documentElement.clientHeight - obtnf.offsetHeight) lefts = xianzhi(lefts,maxle,0) tops = xianzhi(tops,maxto,0) obtnf.style.left = lefts + 'px'; obtnf.style.top = tops + 'px'; }; //滑鼠鬆開時清除時間 document.onmouseup = function(){ document.onmousemove = null; document.onmouseup = null; }; return false; }; }; //引用 drag("box","btn")
做到這裡一個小型的拖拽效果就出來了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2657652/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaScript拖拽效果JavaScript
- canvas矩形拖拽效果Canvas
- 原生 JS 擼一個輪播圖(支援拖拽切屏)JS
- 原生js拖拽功能製作滑動條例項教程JS
- 原生JS實現輪播圖的效果JS
- js拖拽技能JS
- JavaScript元素拖拽路徑回放效果JavaScript
- JavaScript 限定範圍的拖拽效果JavaScript
- 使用BottomSheetBehavior實現美團拖拽效果
- js拖拽:右下角拖拽改變圖片大小JS
- 原生JS實現拋物線動畫以及動態模糊效果JS動畫
- 短視訊app原始碼,實現原生js圖片預覽效果APP原始碼JS
- HTML5原生拖拽/拖放 Drag & Drop 詳解HTML
- 舉例說明js如何拖拽排序?JS排序
- 直播軟體搭建,利用原生JS實現回到頂部以及吸頂效果JS
- app直播原始碼,利用原生JS實現回到頂部以及吸頂效果APP原始碼JS
- jQuery的ztree仿windows檔案新建和拖拽效果jQueryWindows
- 完全模仿掘金Android App大圖瀏覽拖拽效果!AndroidAPP
- 【Flutter 專題】96 圖解 Draggable + DragTarget 基本拖拽效果Flutter圖解
- js閃爍效果JS
- 動畫-CAShapeLayer實現QQ訊息紅點拖拽效果動畫
- Flutter互動實戰-即刻App探索頁下拉&拖拽效果FlutterAPP
- 短視訊軟體開發,RecyclerView實現拖拽效果View
- 原生JS DOM方法JS
- JS原生練習JS
- JS原生互動JS
- 原生JS 操作 DOMJS
- [WPF]原生TabControl控制元件實現拖拽排序功能控制元件排序
- js實現打字效果JS
- 手把手教你擼最新Youtube視訊 拖拽動畫效果動畫
- reactnative實現qq聊天訊息氣泡拖拽消失效果React
- three.js內部拖拽例子全詳解JS
- JS滑鼠事件完成元素拖拽(簡單-高階)JS事件
- js原生節點操作JS
- ajax原生js封裝JS封裝
- 原生js封裝AjaxJS封裝
- js 輪播圖 (原生)JS
- js小球重力和碰撞效果JS