jquery實(shí)現(xiàn)拖拽小方塊效果
今天來(lái)講一個(gè)很常用的拖拽功能,主要是利用一點(diǎn)css,js和jquery,很簡(jiǎn)單但同時(shí)也很重要,掌握好才是最關(guān)鍵的!
下面來(lái)看下效果圖:
這里可以看到,在鼠標(biāo)hover的時(shí)候會(huì)有一個(gè)透明度的變化和一個(gè)盒子陰影!并且在右下角會(huì)實(shí)時(shí)的顯示出小方塊移動(dòng)時(shí)橫縱坐標(biāo)的變化!
可以看到有一個(gè)盒子陰影
在鼠標(biāo)單擊按住的時(shí)候會(huì)變紅,然后可以拖動(dòng)小塊隨意移動(dòng)
我們?cè)诳创a之前可以先了解下jquery中的基本知識(shí)(選擇器,css控制器什么的)和offset()和clientX,clientY。思路很簡(jiǎn)單,就是分別監(jiān)聽(tīng)鼠標(biāo)的 mousedown,mouseup,mousemove這三個(gè)事件,通過(guò)判斷div移動(dòng)之前的坐標(biāo),div移動(dòng)之后的坐標(biāo)(offset獲得)和鼠標(biāo)移動(dòng)前后的坐標(biāo)(clientX和clientY獲得)判斷div在body里的具體坐標(biāo)位置,然后設(shè)置div在body里左邊和上邊的距離(left,top)。代碼思路在代碼里很詳細(xì)!希望大家好好理解!
附上代碼:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>拖動(dòng)圖片</title> <style> html { height: 100%; } body { margin: 0px; padding: 0rem; border: 0rem; height: 100%; width: 100%; position: relative; /* 取消默認(rèn)的輸入事件,不然會(huì)一直出現(xiàn)‘I'一樣的光標(biāo) */ -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } #drag { height: 200px; width: 200px; background: teal; border: none; border-radius: 1rem; /* 一定要是absolute */ position: absolute; opacity: 0.8; } #drag:hover { box-shadow: 0 8px 12px 0 rgba(16, 49, 231, 0.4); opacity: 1; cursor: pointer; } input { width: 12rem; height: 2rem; font-size: 1.5rem; border: 2px solid #aaa; } #input1 { display: block; position: absolute; bottom: 1.2rem; right: 1rem; } #input2 { display: block; position: absolute; bottom: 1.2rem; right: 16rem; } </style> </head> <body> <div id="drag"> </div> <input type="text" id="input1" name="y" placeholder="y軸的坐標(biāo)為"> <input type="text" id="input2" name="x" placeholder="x軸的坐標(biāo)為"> <!-- 引入內(nèi)部jquery,大家使用可以引入CDN --> <script src="jquery-3.5.1.min.js"></script> <script> var client_x = 0; var client_y = 0; var offset_x = 0; var offset_y = 0; var moving = false; // 利用jquery獲得div這個(gè)元素 var drag = $('#drag'); // 添加監(jiān)聽(tīng)事件 drag.on({ // 鼠標(biāo)抬起事件 mouseup: function(e) { moving = false; // 為div添加一個(gè)css樣式 $("#drag").css("background", 'teal'); }, // 鼠標(biāo)按下事件 mousedown: function(e) { moving = true; // this代表的是 div var offset = $(this).offset(); // offset() 方法設(shè)置或返回被選元素相對(duì)于文檔的偏移坐標(biāo) offset_x = offset.left; offset_y = offset.top; // clientX 事件屬性返回當(dāng)事件被觸發(fā)時(shí)鼠標(biāo)指針相對(duì)于瀏覽器頁(yè)面的水平坐標(biāo) client_x = e.clientX; // clientX 事件屬性返回當(dāng)事件被觸發(fā)時(shí)鼠標(biāo)指針相對(duì)于瀏覽器頁(yè)面的垂直坐標(biāo) client_y = e.clientY; drag.css("background", 'rgb(179, 43, 19)'); }, // 鼠標(biāo)移動(dòng)事件 mousemove: function(e) { if (moving) { // 為div添加一個(gè)css樣式 drag.css({ left: offset_x + (e.clientX - client_x), top: offset_y + (e.clientY - client_y) }); // 設(shè)置并顯示input標(biāo)簽內(nèi)x,y軸的坐標(biāo) $(':input[name="x"]').val(offset_x + (e.clientX - client_x)); $(':input[name="y"]').val(offset_y + (e.clientY - client_y)); drag.css("cursor", "pointer"); } } }); </script> </body> </html>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- JQuery Dialog(JS 模態(tài)窗口,可拖拽的DIV)
- JQuery UI的拖拽功能實(shí)現(xiàn)方法小結(jié)
- jQuery拖拽div實(shí)現(xiàn)思路
- jQuery使用drag效果實(shí)現(xiàn)自由拖拽div
- 如何使用jQuery Draggable和Droppable實(shí)現(xiàn)拖拽功能
- 簡(jiǎn)單的jquery拖拽排序效果實(shí)現(xiàn)代碼
- jQuery插件實(shí)現(xiàn)文件上傳功能(支持拖拽)
- JQuery之拖拽插件實(shí)現(xiàn)代碼
- jquery實(shí)現(xiàn)拖拽調(diào)整Div大小
- jQuery EasyUI API 中文文檔 - Draggable 可拖拽
相關(guān)文章
jQuery的ztree仿windows文件新建和拖拽功能的實(shí)現(xiàn)代碼
zTree 是一個(gè)依靠 jQuery 實(shí)現(xiàn)的多功能 “樹插件”。優(yōu)異的性能、靈活的配置、多種功能的組合是 zTree 最大優(yōu)點(diǎn)。這篇文章主要介紹了jQuery的ztree仿windows文件新建和拖拽功能的實(shí)現(xiàn)代碼,需要的朋友可以參考下2018-12-12jquery插件之easing 動(dòng)態(tài)菜單
jQuery Easing Plugin 是一個(gè)簡(jiǎn)單的為對(duì)象擴(kuò)展高級(jí)屬性和選項(xiàng)的jQuery插件。2010-08-08JQuery 控制內(nèi)容長(zhǎng)度超出規(guī)定長(zhǎng)度顯示省略號(hào)
這篇文章主要介紹JQuery如何實(shí)現(xiàn)控制內(nèi)容長(zhǎng)度超出規(guī)定長(zhǎng)度顯示省略號(hào),需要的朋友可以參考下2014-05-05jQuery如何將選中的對(duì)象轉(zhuǎn)化為原始的DOM對(duì)象
在一個(gè)頁(yè)面上選擇元素返回的集合是jQuery對(duì)象而不是原始的DOM對(duì)象,那么如何將其轉(zhuǎn)為DOM對(duì)象呢?下面有個(gè)不錯(cuò)的方法,大家可以嘗試操作下2014-06-06jQuery EasyUI 中文API Layout(Tabs)
發(fā)布jQuery EasyUI 中文API—Layout(Tabs)總結(jié),需要的朋友可以參考下。2010-04-04jQuery實(shí)現(xiàn)默認(rèn)是閉合的FAQ展開效果菜單
這篇文章主要介紹了jQuery實(shí)現(xiàn)默認(rèn)是閉合的FAQ展開效果菜單,涉及jQuery中slideUp及slideDown用法的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09input:checkbox多選框?qū)崿F(xiàn)單選效果跟radio一樣
checkbox是多選,怎么才能讓他變成單選,效果跟radio一樣呢,本菜鳥就自己寫了個(gè)小程序,代碼很簡(jiǎn)單2014-06-06