`
1250605829
  • 浏览: 60546 次
  • 性别: Icon_minigender_1
  • 来自: 阜阳
社区版块
存档分类
最新评论

静态页面拖拽实现代码

    博客分类:
  • java
阅读更多

静态拖拽行:

 

 

 

<html>
<head>
<title>行拖动</title>
<script>
	window.onload = function() {
		//绑定事件
		var addEvent = document.addEventListener ? function(el, type, callback) {
			el.addEventListener(type, callback, !1);
		}
				: function(el, type, callback) {
					el.attachEvent("on" + type, callback);
				}
		//判定对样式的支持
		var getStyleName = (function() {
			var prefixes = [ '', '-ms-', '-moz-', '-webkit-', '-khtml-', '-o-' ];
			var reg_cap = /-([a-z])/g;
			function getStyleName(css, el) {
				el = el || document.documentElement;
				var style = el.style, test;
				for ( var i = 0, l = prefixes.length; i < l; i++) {
					test = (prefixes[i] + css).replace(reg_cap,
							function($0, $1) {
								return $1.toUpperCase();
							});
					if (test in style) {
						return test;
					}
				}
				return null;
			}
			return getStyleName;
		})();
		var userSelect = getStyleName("user-select");

		//精确获取样式
		var getStyle = document.defaultView ? function(el, style) {
			return document.defaultView.getComputedStyle(el, null)
					.getPropertyValue(style)
		} : function(el, style) {
			style = style.replace(/\-(\w)/g, function($, $1) {
				return $1.toUpperCase();
			});
			return el.currentStyle[style];
		}
		var dragManager = {
			y : 0,
			dragStart : function(e) {
				e = e || event;
				var handler = e.target || e.srcElement;
				if (handler.nodeName === "TD") {
					handler = handler.parentNode;
					dragManager.handler = handler;
					if (!handler.getAttribute("data-background")) {
						handler.setAttribute("data-background", getStyle(
								handler, "background-color"))
					}
					//显示为可移动的状态
					handler.style.backgroundColor = "#ccc";
					handler.style.cursor = "move";
					dragManager.y = e.clientY;
					//★★★★★★★★★★★★★★★★★★★★
					if (typeof userSelect === "string") {
						return document.documentElement.style[userSelect] = "none";
					}
					document.unselectable = "on";
					document.onselectstart = function() {
						return false;
					}
					//★★★★★★★★★★★★★★★★★★★★
				}
			},
			draging : function(e) {//mousemove时拖动行
				var handler = dragManager.handler;
				if (handler) {
					e = e || event;

					var y = e.clientY;
					var down = y > dragManager.y;//是否向下移动
					var tr = document.elementFromPoint(e.clientX, e.clientY);
					if (tr && tr.nodeName == "TD") {
						tr = tr.parentNode
						dragManager.y = y;
						if (handler !== tr) {
							tr.parentNode.insertBefore(handler,
									(down ? tr.nextSibling : tr));
						}
					}
					;
				}
			},
			dragEnd : function() {
				var handler = dragManager.handler
				if (handler) {
					handler.style.backgroundColor = handler
							.getAttribute("data-background");
					handler.style.cursor = "default";
					dragManager.handler = null;

				}
				//★★★★★★★★★★★★★★★★★★★★
				if (typeof userSelect === "string") {
					return document.documentElement.style[userSelect] = "text";
				}
				document.unselectable = "off";
				document.onselectstart = null;
				//★★★★★★★★★★★★★★★★★★★★
			},
			main : function(el) {
				addEvent(el, "mousedown", dragManager.dragStart);
				addEvent(document, "mousemove", dragManager.draging);
				addEvent(document, "mouseup", dragManager.dragEnd);

			}
		}
		var el = document.getElementById("table");
		dragManager.main(el);

	}
</script>
<style>
.table {
	width: 60%;
	border: 1px solid green;
	border-collapse: collapse;
}

.table td {
	border: 1px solid green;
	height: 20px;
}
</style>
</head>
<body>
	<h1>行拖动</h1>
	<table id="table" class="table">
		<tbody>
			<tr>
				<td>1</td>
				<td>第一行</td>
			</tr>
			<tr id="2">
				<td class="2">2</td>
				<td>第二行</td>
			</tr>
			<tr id="3">
				<td class="3">3</td>
				<td>第三行</td>
			</tr>
			<tr id="4">
				<td class="4">4</td>
				<td>第四行</td>
			</tr>
			<tr id="5">
				<td class="5">5</td>
				<td>第五行</td>
			</tr>
			<tr id="6">
				<td class="6">6</td>
				<td>第六行</td>
			</tr>
		</tbody>
	</table>



  <div class="sortClass" id="toolsort">
                            <ul>
                                <li>API</li>
                                <li>组件</li>
                                <li>模板</li>
                                <li>代码</li>
                                <li>第三方</li>
                                <li>IT资源</li>
                            </ul>
  </div>
</body>
</html>

 

分享到:
评论

相关推荐

    后台海报制作html静态页面

    后台海报制作html静态页面 1. 可以拖动图片 2. 实现了文字字体,颜色,大小 3. 右键菜单可以删除层

    ASP.NET的网页代码模型及生命周期

    代码隐藏页模型与单文件页模型不同的是,代码隐藏页模型将事物处理代码都存放在cs文件中,当ASP.NET网页运行的时候,ASP.NET类生成时会先处理cs文件中的代码,再处理.aspx页面中的代码。这种过程被成为代码分离。 ...

    网页弹出框(可拖动)

    网页弹出提示框和确认框(可拖动); 采用纯JS编写; 可引入代码直接使用。

    基于TypeScript+React拖动配置大屏的后台管理系统源码+项目部署操作说明.zip

    bigscreen 是一个高效的拖拽式低代码数据可视化开发平台,将图表或页面元素封装为基础组件,无需编写代码即可制作数据大屏,减少心智负担。 项目纯前端-Demo 地址:...

    jQuery权威指南-源代码

    《jQuery权威指南》除了理论知识丰富而全面外,它还有一个最大的特点就是注重实战,每个知识点都有一个完整的案例,包括需求分析、代码实现和结果展示三个部分,而且还包含两个综合性的案例,它的实践性之强是目前...

    vc++ 应用源码包_6

    MyPhpServer(原创,有实现的主要代码) microcai-ibus-t9-输入法源码 如题,主要源码就几个,详细见代码。 MzfHips主动防御 主要在MzfHipsDlg中,程序分析进程数据、驱动数据、注册表数据从而实现主动防御。 超级...

    vc++ 应用源码包_5

    MyPhpServer(原创,有实现的主要代码) microcai-ibus-t9-输入法源码 如题,主要源码就几个,详细见代码。 MzfHips主动防御 主要在MzfHipsDlg中,程序分析进程数据、驱动数据、注册表数据从而实现主动防御。 超级...

    vc++ 开发实例源码包

    MyPhpServer(原创,有实现的主要代码) 如题。 microcai-ibus-t9-输入法源码 如题,主要源码就几个,详细见代码。 MzfHips主动防御 主要在MzfHipsDlg中,程序分析进程数据、驱动数据、注册表数据从而实现主动防御。 ...

    易语言任意窗口截长图代码与成品

    可通过拖动蝴蝶取得任意窗口句柄,自动截取窗口长图,支持静态页面自动拼接,手动拼接。

    zTree-3 JQuery 树形插件-附带完整的使用说明和Demo,兼容包括IE6在内所有浏览器

    1.zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点 2.zTree v3.x 将核心代码按照功能进行了分割,不需要的代码可以不用加载 3.采用了 延迟加载 技术,...

    vc++ 应用源码包_1

    MyPhpServer(原创,有实现的主要代码) microcai-ibus-t9-输入法源码 如题,主要源码就几个,详细见代码。 MzfHips主动防御 主要在MzfHipsDlg中,程序分析进程数据、驱动数据、注册表数据从而实现主动防御。 超级...

    最新建站之星2.1商业破解版 带1千多套模板

    同时该系统率先在国内采用模块化管理,您想要改变页面布局仅需使用鼠标拖拽相应的模块到指定的页面区域即可,真正做到所见即所得。当然,如果您懂HTML语言,您还可以在建站系统的框架内设计个性化的网站,系统给予了...

    vc++ 应用源码包_2

    MyPhpServer(原创,有实现的主要代码) microcai-ibus-t9-输入法源码 如题,主要源码就几个,详细见代码。 MzfHips主动防御 主要在MzfHipsDlg中,程序分析进程数据、驱动数据、注册表数据从而实现主动防御。 超级...

    zTree源码开发js

    •zTree v3.0 将核心代码按照功能进行了分割,不需要的代码可以不用加载 •采用了 延迟加载 技术,上万节点轻松加载,即使在 IE6 下也能基本做到秒杀 •兼容 IE、FireFox、Chrome、Opera、Safari 等浏览器 •支持 ...

    vc++ 应用源码包_3

    MyPhpServer(原创,有实现的主要代码) microcai-ibus-t9-输入法源码 如题,主要源码就几个,详细见代码。 MzfHips主动防御 主要在MzfHipsDlg中,程序分析进程数据、驱动数据、注册表数据从而实现主动防御。 超级...

    JQuery zTree v3.2 最新版

    zTree v3.0 将核心代码按照功能进行了分割,不需要的代码可以不用加载 采用了 延迟加载 技术,上万节点轻松加载,即使在 IE6 下也能基本做到秒杀 兼容 IE、FireFox、Chrome、Opera、Safari 等浏览器 支持 JSON 数据 ...

    ztree 树插件简单实例-example-01

    zTree v3.0 将核心代码按照功能进行了分割,不需要的代码可以不用加载 采用了 延迟加载 技术,上万节点轻松加载,即使在 IE6 下也能基本做到秒杀 兼容 IE、FireFox、Chrome、Opera、Safari 等浏览器 支持 JSON 数据 ...

    ztree树的部分js文件

    zTree v3.0 将核心代码按照功能进行了分割,不需要的代码可以不用加载 采用了 延迟加载 技术,上万节点轻松加载,即使在 IE6 下也能基本做到秒杀 兼容 IE、FireFox、Chrome、Opera、Safari 等浏览器 支持 JSON ...

    ztree 3.5.16

    zTree v3.0 将核心代码按照功能进行了分割,不需要的代码可以不用加载 采用了 延迟加载 技术,上万节点轻松加载,即使在 IE6 下也能基本做到秒杀 兼容 IE、FireFox、Chrome、Opera、Safari 等浏览器 支持 JSON ...

    七彩效果全行业带产品展示新闻动态企业网站模板下载

    源码介绍:本模板已集成数据包,安装即可使用,不带管理后台,如需要可下载建站宝盒配合安装,模板页面可使用网页编辑工具自行修改,需具备一定的html代码技术哦。 安装步骤 1.首先请将下载的安装包解压缩到本地...

Global site tag (gtag.js) - Google Analytics