JS-Demo1:JavaScript實現表格列拖動

JS表格列可拖動特效:

[html]
<!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>

[html]
<!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> 

 

 

摘自 Siuon's Blog

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *