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();"> </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" onmousedown="mousedown();"> </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