JS-Demo1:JavaScript实现表格列拖动

JS表格列可拖动特效:

<!DOCTYPE html>
<html>
  <head>
	<style type="text/css">
  		table{
  			border-top:solid 1px black; 
  			border-left:solid 1px black;
  			font-size:12px;
  			width: 100%;
  		}
  		th{
  			white-space: nowrap;
  		}
  		th,td{
  			border-right-style: solid;
  			border-right-width: 1px;
  			border-bottom-style: solid;
  			border-bottom-width: 1px;
  			height:30px;
  		}
  		.dragable{
  			width: 3px;
  			height:100%; 
  			background-color: white;
  			float: right;  /*这个样式与效果有一定关系,其他无所谓*/
  			cursor: col-resize;
  		}
  	</style>
  	<script type="text/javascript">
  		var draging = false;//是否拖拽中
  		var dragElement = null;//当前拖拽的th
  		var offsetLeft = 0;//当前拖拽的th与绝对左坐标
  		var offsetWidth = 0;//当前拖拽的th的绝对宽度
  		function mousedown(){
  			if(draging) return;
  			draging = true;
  			dragElement = window.event.srcElement.parentNode;
  			offsetLeft = dragElement.offsetLeft;
  			document.body.style.cursor = "col-resize";
  			document.body.onselectstart = function(){return false;};//拖拽的时候,鼠标滑过字的时候,不让选中(默认鼠标选中字的效果,大家都知道)
  		}
  		function mouseup(){
  			draging = false;
  			dragElement = null;
  			document.body.style.cursor = "auto";
  			document.body.onselectstart = function(){return true};
  		}
  		function mousemove(){
  			if(draging && dragElement){
	  			var width = event.clientX-offsetLeft;
	  			if(width>0){
		  			dragElement.style.width = width;
		  			offsetWidth = dragElement.offsetWidth;
	  			}else{
	  				dragElement.style.width = offsetWidth;
	  			}
  			}
  		}
  	</script>
  </head>
  <body onmousemove="mousemove();" onmouseup="mouseup();">
  	<table cellpadding="0" cellspacing="0">
  		<thead>
	  		<tr>
	  			<th style="width: 120px;">编号<span class="dragable" onmousedown="mousedown();">&nbsp;</span></th>
	  			<th style="width: 120px;">姓名<span class="dragable" onmousedown="mousedown();">&nbsp;</span></th>
	  			<th style="width: 120px;">年龄<span class="dragable" onmousedown="mousedown();">&nbsp;</span></th>
	  			<th>备注</th>
	  		</tr>
  		</thead>
  		<tbody>
  			<tr>
  				<td>1</td>
  				<td>Siuon</td>
  				<td>100</td>
  				<td>JavaEE工程师...</td>
  			</tr>
  		</tbody>
  	</table>
  </body>
</html>

动态生成<span class="dragable" onmousedown="mousedown();">&nbsp;</span>

<!DOCTYPE html>
<html>
  <head>
	<style type="text/css">
  		table{
  			border-top:solid 1px black; 
  			border-left:solid 1px black;
  			font-size:12px;
  			width: 100%;
  		}
  		th{
  			white-space: nowrap;
  		}
  		th,td{
  			border-right-style: solid;
  			border-right-width: 1px;
  			border-bottom-style: solid;
  			border-bottom-width: 1px;
  			height:30px;
  		}
  		.dragable{
  			width: 3px;
  			height:100%; 
  			background-color: white;
  			float: right;  /*这个样式与效果有一定关系,其他无所谓*/
  			cursor: col-resize;
  		}
  	</style>
  	<script type="text/javascript">
  		var draging = false;//是否拖拽中
  		var dragElement = null;//当前拖拽的th
  		var offsetLeft = 0;//当前拖拽的th与绝对左坐标
  		var offsetWidth = 0;//当前拖拽的th的绝对宽度
  		function mousedown(){
  			if(draging) return;
  			draging = true;
  			dragElement = window.event.srcElement.parentNode;
  			offsetLeft = dragElement.offsetLeft;
  			document.body.style.cursor = "col-resize";
  			document.body.onselectstart = function(){return false;};//拖拽的时候,鼠标滑过字的时候,不让选中(默认鼠标选中字的效果,大家都知道)
  		}
  		function mouseup(){
  			draging = false;
  			dragElement = null;
  			document.body.style.cursor = "auto";
  			document.body.onselectstart = function(){return true};
  		}
  		function mousemove(){
  			if(draging && dragElement){
	  			var width = event.clientX-offsetLeft;
	  			if(width>0){
		  			dragElement.style.width = width;
		  			offsetWidth = dragElement.offsetWidth;
	  			}else{
	  				dragElement.style.width = offsetWidth;
	  			}
  			}
  		}
  		
  		//创建<span class="dragable" onmousedown="mousedown();"> </span>
  		function createSpan(){
  			var span = document.createElement("span");
  			span.className = "dragable";
  			span.attachEvent("onmousedown",mousedown);
  			span.innerHTML = " ";
  			return span;
  		}
  		function init(){
  			//在th添加span
  			var ths = document.getElementsByTagName("th");
  			for(var i=0;i<ths.length;i++){
  				ths[i].appendChild(createSpan());
  			}
  		}
  	</script>
  </head>
  <body onload="init()" onmousemove="mousemove();" onmouseup="mouseup();">
  	<table id="mytable" cellpadding="0" cellspacing="0">
  		<thead>
	  		<tr>
	  			<th style="width: 120px;">编号</th>
	  			<th style="width: 120px;">姓名</th>
	  			<th style="width: 120px;">年龄</th>
	  			<th>备注</th>
	  		</tr>
  		</thead>
  		<tbody>
  			<tr>
  				<td>1</td>
  				<td>Siuon</td>
  				<td>100</td>
  				<td>JavaEE工程师...</td>
  			</tr>
  		</tbody>
  	</table>
  </body>
</html>


猜你喜欢

转载自blog.csdn.net/xiaochunyong/article/details/7611778
今日推荐