使用angular帮你实现拖拽

拖拽有多种写法,在这里就看一看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>

  

时间: 2024-11-04 15:28:25

使用angular帮你实现拖拽的相关文章

Angular 2.0 文本拖拽

基于Angular7.1和TypeScript实现 Html代码 <div style="padding-left: 0px;"> <div id='contentTem' class='temp-style' contentEditable="true" (drop)="drop($event)" (dragover)="allowDrop($event)" ng-change="changeVa

angular ng-repeat+sortable 拖拽demo

由于项目需求,需要使用angular 实现列表的增.删.改,并且列表支持拖拽. 看了下angular-ui 里面的sortable组件,使用起来也是非常简单,几十行代码就完成了所需功能. 我现在懒得想如何使用jquery完成该功能,不过我能肯定的是使用jquery完成这个功能,代码至少多几倍 效果如下: 本文所使用代码下载

结构-行为-样式 - Angularjs 环境下Ztree结合JqueryUI实现拖拽

新的项目中有一个需求是要求客户标签可以自定义,于是就想到了客户体验,让客户自己拖拽标签进行组合查询.但是理想很丰满,现实很骨感.一开始就遇到了问题,各个插件之间的结合问题,折腾一翻之后终于实现了这个功能,这里记录一下. 首先,在Angularjs+AMD+RequireJs的环境下引入插件: require.config({ baseUrl: "", urlArgs: 'ver=' + (+new Date()), waitSeconds: 0, paths: { 'jqueryUI'

拖拽生成组织架构

因为项目需要 找了下网上可以拖拽生成组织架构的资料 找到了 jOrgChart这个控件 花半天自己实现了拖拽生成 用的EASYUI Draggable Droppable 当然熟悉 JQUERYUI 的 也可以用 JQUERY UI 的 拖拽 功能 只完成很基本的功能 但愿能帮到需要用的人^^ <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="tex

html5拖拽

之前开发写了一个拖拽的小demo,所以记录一下拖拽相关的知识. 下面这段摘自张鑫旭老师的文章. 1.DataTransfer 对象:退拽对象用来传递的媒介,使用一般为Event.dataTransfer. 2.draggable 属性:就是标签元素要设置draggable=true,否则不会有效果,例如: 3.ondragstart 事件:当拖拽元素开始被拖拽的时候触发的事件,此事件作用在被拖曳元素上 4.ondragenter 事件:当拖曳元素进入目标元素的时候触发的事件,此事件作用在目标元素

ionic 手势事件(滑动,拖拽,点击...)

ionic之AngularJS(十)——手势事件 Posted on 2015年12月23日 by cswisdomliu 长按 : on-hold 在屏幕同一位置按住超过500ms,将触发on-hold事件: 你可以在任何元素上使用这个指令挂接监听函数: <any on-hold=“…”>…</any> 示例代码: <body  ng-controller=”ezCtrl”><ion-header-bar class=”bar-positive”  on-hol

Javascript 拖拽的一些高级的应用——逐行分析代码,让你轻松了解拖拽的原理

我们看看之前的拖拽在周围有东西的时候会出现什么问题? 在高级浏览器中不会有啥问题,我们放到IE7下面测试一下,问题就出来了.如图 我们可以很清楚的看到,文字都已经被选中了.那这个用户体验很不好,用起来也不方便.顺便提一下,我们之前加了一个return false;帮我们解决了很多问题,如果去掉这个的话,chrome也会出现一样的问题.那么也就是说这个return false;可以解决chrome ff IE9+ 这些浏览器的问题. 实际上在我们开发中,页面上会有许多的元素组成,不可能就一个div

angualr项目table拖拽列宽效果

首先要有一个table的html列表 我就不上了,因为加载有异步的问题,所以我把js代码放到一个封装函数里面,表格加载出来之后调用函数,这个表格的dom就能找到了.下面是封装的js代码 //拖拽调整列宽 $rootScope.searchTable= function(){ var tTD; //用来存储当前更改宽度的Table Cell,避免快速移动鼠标的问题 var table = document.getElementsByClassName('table'); console.log(t

easyUI拖拽功能讲解以及多选拖拽的实现

首先我们考虑这样一个业务场景:一个维修部门中分了N个维修组,维修部门的负责人需要将这个部门的维修人员分配到这些组里去. 当然,他可以选中一个维修人员,然后给他分配维修组,但是从人性化角度考虑,若利用拖拽是否更加的快捷和明确呢? 比如我们可以将维修组和维修人员都列出来,然后只需要将维修人员拖动到对应的组里即可完成分组. 另外,由于一个个拖还是太繁琐,还需要实现选中多个维修人员一起分组.那么我们下面一步步来,先实现单个的拖拽功能,再加入多选拖动支持~ 单选拖动 首先,根据我们刚才描述的场景,简单设计