您好,登錄后才能下訂單哦!
使用angular怎么實(shí)現(xiàn)一個(gè)拖拽功能?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
<!DOCTYPE html> <html ng-app="myApp"> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> #box{ width: 100px; height: 100px; background: black; /*一定要給當(dāng)前元素設(shè)置絕對定位*/ position: absolute; left: 0; top: 0; } </style> </head> <body> <div id="box" my-drag></div> </body> <script src="jquery-3.1.1.min.js" type="text/javascript" charset="utf-8"></script> <script src="../js/angular.min.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> // 自定義一個(gè)模塊 var app = angular.module("myApp",[]); // 自定義指令 自定義指令時(shí)一定要使用駝峰命名法 app.directive('myDrag',function(){ // 返回一個(gè)函數(shù) return{ link : function(scope,element,attr){ // scope可以接收到的數(shù)據(jù) // element 當(dāng)前的元素 // attr屬性 // 拖拽的三大事件mousedown,mousemove,mouseup.使用jq綁定事件的方法進(jìn)行綁定 element.on('mousedown',function(ev){ // 通過event獲取到當(dāng)前對象 var This = $(this); // 獲取到鼠標(biāo)離當(dāng)前元素上邊框的距離 var disX = ev.clientX - $(this).offset().left; // 獲取到元素距離左邊框的距離 // 因?yàn)樵谕献У倪^程中不變的是鼠標(biāo)距離元素邊框的距離 通過不變和已知求變量 var disY = ev.clientY - $(this).offset().top; $(document).on('mousemove',function(ev){ // 將所改變的值通過樣式設(shè)置給當(dāng)前元素 This.css({ left:ev.clientX - disX, top:ev.clientY - disY, }); }); $(document).on('mouseup',function(){ // 鼠標(biāo)松開時(shí)關(guān)閉所有事件 $(document).off(); }) }) }, restrict:'A', //ECMA E元素 C類名 M注釋 A屬性 }; }); </script> </html>
看完上述內(nèi)容,你們掌握使用angular怎么實(shí)現(xiàn)一個(gè)拖拽功能的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。