使用angular怎么实现一个拖拽功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
<!DOCTYPE html> <html ng-app="myApp"> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> #box{ width: 100px; height: 100px; background: black; /*一定要给当前元素设置绝对定位*/ 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"> // 自定义一个模块 var app = angular.module("myApp",[]); // 自定义指令 自定义指令时一定要使用驼峰命名法 app.directive('myDrag',function(){ // 返回一个函数 return{ link : function(scope,element,attr){ // scope可以接收到的数据 // element 当前的元素 // attr属性 // 拖拽的三大事件mousedown,mousemove,mouseup.使用jq绑定事件的方法进行绑定 element.on('mousedown',function(ev){ // 通过event获取到当前对象 var This = $(this); // 获取到鼠标离当前元素上边框的距离 var disX = ev.clientX - $(this).offset().left; // 获取到元素距离左边框的距离 // 因为在拖拽的过程中不变的是鼠标距离元素边框的距离 通过不变和已知求变量 var disY = ev.clientY - $(this).offset().top; $(document).on('mousemove',function(ev){ // 将所改变的值通过样式设置给当前元素 This.css({ left:ev.clientX - disX, top:ev.clientY - disY, }); }); $(document).on('mouseup',function(){ // 鼠标松开时关闭所有事件 $(document).off(); }) }) }, restrict:'A', //ECMA E元素 C类名 M注释 A属性 }; }); </script> </html>
看完上述内容,你们掌握使用angular怎么实现一个拖拽功能的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。