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();"> </span></th>
- <th style="width: 120px;">姓名<span class="dragable" onmousedown="mousedown();"> </span></th>
- <th style="width: 120px;">年龄<span class="dragable" onmousedown="mousedown();"> </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" οnmοusedοwn="mousedown();"> </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>