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

JS表格列可拖动特效:

[html]  view plain copy
  1. <!DOCTYPE html>  
  2. <html>  
  3.   <head>  
  4.     <style type="text/css">  
  5.         table{  
  6.             border-top:solid 1px black;   
  7.             border-left:solid 1px black;  
  8.             font-size:12px;  
  9.             width: 100%;  
  10.         }  
  11.         th{  
  12.             white-space: nowrap;  
  13.         }  
  14.         th,td{  
  15.             border-right-style: solid;  
  16.             border-right-width: 1px;  
  17.             border-bottom-style: solid;  
  18.             border-bottom-width: 1px;  
  19.             height:30px;  
  20.         }  
  21.         .dragable{  
  22.             width: 3px;  
  23.             height:100%;   
  24.             background-color: white;  
  25.             float: right;  /*这个样式与效果有一定关系,其他无所谓*/  
  26.             cursor: col-resize;  
  27.         }  
  28.     </style>  
  29.     <script type="text/javascript">  
  30.         var draging = false;//是否拖拽中  
  31.         var dragElement = null;//当前拖拽的th  
  32.         var offsetLeft = 0;//当前拖拽的th与绝对左坐标  
  33.         var offsetWidth = 0;//当前拖拽的th的绝对宽度  
  34.         function mousedown(){  
  35.             if(draging) return;  
  36.             draging = true;  
  37.             dragElement = window.event.srcElement.parentNode;  
  38.             offsetLeft = dragElement.offsetLeft;  
  39.             document.body.style.cursor = "col-resize";  
  40.             document.body.onselectstart = function(){return false;};//拖拽的时候,鼠标滑过字的时候,不让选中(默认鼠标选中字的效果,大家都知道)  
  41.         }  
  42.         function mouseup(){  
  43.             draging = false;  
  44.             dragElement = null;  
  45.             document.body.style.cursor = "auto";  
  46.             document.body.onselectstart = function(){return true};  
  47.         }  
  48.         function mousemove(){  
  49.             if(draging && dragElement){  
  50.                 var width = event.clientX-offsetLeft;  
  51.                 if(width>0){  
  52.                     dragElement.style.width = width;  
  53.                     offsetWidth = dragElement.offsetWidth;  
  54.                 }else{  
  55.                     dragElement.style.width = offsetWidth;  
  56.                 }  
  57.             }  
  58.         }  
  59.     </script>  
  60.   </head>  
  61.   <body onmousemove="mousemove();" onmouseup="mouseup();">  
  62.     <table cellpadding="0" cellspacing="0">  
  63.         <thead>  
  64.             <tr>  
  65.                 <th style="width: 120px;">编号<span class="dragable" onmousedown="mousedown();">&nbsp;</span></th>  
  66.                 <th style="width: 120px;">姓名<span class="dragable" onmousedown="mousedown();">&nbsp;</span></th>  
  67.                 <th style="width: 120px;">年龄<span class="dragable" onmousedown="mousedown();">&nbsp;</span></th>  
  68.                 <th>备注</th>  
  69.             </tr>  
  70.         </thead>  
  71.         <tbody>  
  72.             <tr>  
  73.                 <td>1</td>  
  74.                 <td>Siuon</td>  
  75.                 <td>100</td>  
  76.                 <td>JavaEE工程师...</td>  
  77.             </tr>  
  78.         </tbody>  
  79.     </table>  
  80.   </body>  
  81. </html>  

动态生成<span class="dragable" οnmοusedοwn="mousedown();">&nbsp;</span>

[html]  view plain copy
  1. <!DOCTYPE html>  
  2. <html>  
  3.   <head>  
  4.     <style type="text/css">  
  5.         table{  
  6.             border-top:solid 1px black;   
  7.             border-left:solid 1px black;  
  8.             font-size:12px;  
  9.             width: 100%;  
  10.         }  
  11.         th{  
  12.             white-space: nowrap;  
  13.         }  
  14.         th,td{  
  15.             border-right-style: solid;  
  16.             border-right-width: 1px;  
  17.             border-bottom-style: solid;  
  18.             border-bottom-width: 1px;  
  19.             height:30px;  
  20.         }  
  21.         .dragable{  
  22.             width: 3px;  
  23.             height:100%;   
  24.             background-color: white;  
  25.             float: right;  /*这个样式与效果有一定关系,其他无所谓*/  
  26.             cursor: col-resize;  
  27.         }  
  28.     </style>  
  29.     <script type="text/javascript">  
  30.         var draging = false;//是否拖拽中  
  31.         var dragElement = null;//当前拖拽的th  
  32.         var offsetLeft = 0;//当前拖拽的th与绝对左坐标  
  33.         var offsetWidth = 0;//当前拖拽的th的绝对宽度  
  34.         function mousedown(){  
  35.             if(draging) return;  
  36.             draging = true;  
  37.             dragElement = window.event.srcElement.parentNode;  
  38.             offsetLeft = dragElement.offsetLeft;  
  39.             document.body.style.cursor = "col-resize";  
  40.             document.body.onselectstart = function(){return false;};//拖拽的时候,鼠标滑过字的时候,不让选中(默认鼠标选中字的效果,大家都知道)  
  41.         }  
  42.         function mouseup(){  
  43.             draging = false;  
  44.             dragElement = null;  
  45.             document.body.style.cursor = "auto";  
  46.             document.body.onselectstart = function(){return true};  
  47.         }  
  48.         function mousemove(){  
  49.             if(draging && dragElement){  
  50.                 var width = event.clientX-offsetLeft;  
  51.                 if(width>0){  
  52.                     dragElement.style.width = width;  
  53.                     offsetWidth = dragElement.offsetWidth;  
  54.                 }else{  
  55.                     dragElement.style.width = offsetWidth;  
  56.                 }  
  57.             }  
  58.         }  
  59.           
  60.         //创建<span class="dragable" onmousedown="mousedown();"> </span>  
  61.         function createSpan(){  
  62.             var span = document.createElement("span");  
  63.             span.className = "dragable";  
  64.             span.attachEvent("onmousedown",mousedown);  
  65.             span.innerHTML = " ";  
  66.             return span;  
  67.         }  
  68.         function init(){  
  69.             //在th添加span  
  70.             var ths = document.getElementsByTagName("th");  
  71.             for(var i=0;i<ths.length;i++){  
  72.                 ths[i].appendChild(createSpan());  
  73.             }  
  74.         }  
  75.     </script>  
  76.   </head>  
  77.   <body onload="init()" onmousemove="mousemove();" onmouseup="mouseup();">  
  78.     <table id="mytable" cellpadding="0" cellspacing="0">  
  79.         <thead>  
  80.             <tr>  
  81.                 <th style="width: 120px;">编号</th>  
  82.                 <th style="width: 120px;">姓名</th>  
  83.                 <th style="width: 120px;">年龄</th>  
  84.                 <th>备注</th>  
  85.             </tr>  
  86.         </thead>  
  87.         <tbody>  
  88.             <tr>  
  89.                 <td>1</td>  
  90.                 <td>Siuon</td>  
  91.                 <td>100</td>  
  92.                 <td>JavaEE工程师...</td>  
  93.             </tr>  
  94.         </tbody>  
  95.     </table>  
  96.   </body>  
  97. </html>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值