您的位置:首页 > Web前端 > AngularJS

使用angular帮你实现拖拽的示例

2017-07-05 08:21 597 查看

拖拽有多种写法,在这里就看一看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帮你实现拖拽的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  angular 实现 拖拽