JS实现表格列宽拖动
在数据表格中,有时候需要拖动表格宽度,查看完整的数据,是很常用的功能。
1效果
可以用纯JS就可以实现,如下,是正常情况下的表格:
拖动表格标题中间线,拖动后效果如下:
查看DEMO
2代码
HTML代码:
<!DOCTYPEhtml>
<html>
<head>
<title>演示</title>
<scripttype="text/javascript"src="tabSize.js"></script>
<scripttype="text/javascript">
window.onload=function(){
tabSize.init('resizeTable');
};
</script>
<style>
.resizeBox{overflow-x:auto;width:500px;}
table{width:100%;border:1pxsolid#000;border-collapse:collapse;}
th{background:#ccc;}
th,td{border:1pxsolid#000;}
</style>
</head>
<body>
<div>
<tableid="resizeTable">
<thead>
<tr><th>标题1</th><th>标题2</th><th>标题3</th></tr>
</thead>
<tbody>
<tr><td>第1行</td><td>第1行</td><td>第1行</td></tr>
<tr><td>第2行</td><td>第2行</td><td>第1行</td></tr>
<tr><td>第3行</td><td>第3行</td><td>第1行</td></tr>
</tbody>
</table>
</div>
</body>
</html>
JS代码:
"usestrict";
vartabSize=tabSize||{};
tabSize.init=function(id){
vari,
self,
table=document.getElementById(id),
header=table.rows[0],
tableX=header.clientWidth,
length=header.cells.length;
for(i=0;i<length;i++){
header.cells[i].onmousedown=function(){
self=this;
if(event.offsetX>self.offsetWidth-10){
self.mouseDown=true;
self.oldX=event.x;
self.oldWidth=self.offsetWidth;
}
};
header.cells[i].onmousemove=function(){
if(event.offsetX>this.offsetWidth-10){
this.style.cursor='col-resize';
}else{
this.style.cursor='default';
}
if(self==undefined){
self=this;
}
if(self.mouseDown!=null&&self.mouseDown==true){
self.style.cursor='default';
if(self.oldWidth+(event.x-self.oldX)>0){
self.width=self.oldWidth+(event.x-self.oldX);
}
self.style.width=self.width;
table.style.width=tableX+(event.x-self.oldX)+'px';
self.style.cursor='col-resize';
}
};
table.onmouseup=function(){
if(self==undefined){
self=this;
}
self.mouseDown=false;
self.style.cursor='default';
tableX=header.clientWidth;
};
}
};
点击下载完整代码。