鼠标拖动改变表格大小

<html>
<head>
<title>鼠标拖动改变表格大小</title>
<SCRIPT language=javascript>
var theobject = null; 
function resizeObject() {
	this.el        = null; 
	this.dir    = "";      
	this.grabx = null;     
	this.graby = null;
	this.width = null;
	this.height = null;
	this.left = null;
	this.top = null;
}
	
function getDirection(el) {
	var xPos, yPos, offset, dir;
	dir = "";
	xPos = window.event.offsetX;
	yPos = window.event.offsetY;
	offset = 8;
	if (yPos<offset) dir += "n";
	else if (yPos > el.offsetHeight-offset) dir += "s";
	if (xPos<offset) dir += "w";
	else if (xPos > el.offsetWidth-offset) dir += "e";
	return dir;
}

function doDown() {
	var el = getReal(event.srcElement, "className", "resizeMe");
	if (el == null) {
		theobject = null;
		return;
	}		

	dir = getDirection(el);
	if (dir == "") return;

	theobject = new resizeObject();
		
	theobject.el = el;
	theobject.dir = dir;

	theobject.grabx = window.event.clientX;
	theobject.graby = window.event.clientY;
	theobject.width = el.offsetWidth;
	theobject.height = el.offsetHeight;
	theobject.left = el.offsetLeft;
	theobject.top = el.offsetTop;

	window.event.returnValue = false;
	window.event.cancelBubble = true;
}

function doUp() {
	if (theobject != null) {
		theobject = null;
	}
}
function doMove() {
	var el, xPos, yPos, str, xMin, yMin;
	xMin = 8; 
	yMin = 8; 

	el = getReal(event.srcElement, "className", "resizeMe");

	if (el.className == "resizeMe") {
		str = getDirection(el);
		if (str == "") str = "default";
		else str += "-resize";
		el.style.cursor = str;
	}
	

	if(theobject != null) {
		if (dir.indexOf("e") != -1)
			theobject.el.style.width = Math.max(xMin, theobject.width + window.event.clientX - theobject.grabx) + "px";
	
		if (dir.indexOf("s") != -1)
			theobject.el.style.height = Math.max(yMin, theobject.height + window.event.clientY - theobject.graby) + "px";

		if (dir.indexOf("w") != -1) {
			theobject.el.style.left = Math.min(theobject.left + window.event.clientX - theobject.grabx, theobject.left + theobject.width - xMin) + "px";
			theobject.el.style.width = Math.max(xMin, theobject.width - window.event.clientX + theobject.grabx) + "px";
		}
		if (dir.indexOf("n") != -1) {
			theobject.el.style.top = Math.min(theobject.top + window.event.clientY - theobject.graby, theobject.top + theobject.height - yMin) + "px";
			theobject.el.style.height = Math.max(yMin, theobject.height - window.event.clientY + theobject.graby) + "px";
		}
		window.event.returnValue = false;
		window.event.cancelBubble = true;
	} 
}
function getReal(el, type, value) {
	temp = el;
	while ((temp != null)  &&  (temp.tagName != "BODY")) {
		if (eval("temp." + type) == value) {
			el = temp;
			return el;
		}
		temp = temp.parentElement;
	}
	return el;
}

document.onmousedown = doDown;
document.onmouseup   = doUp;
document.onmousemove = doMove;
</SCRIPT>
<SCRIPT language=javascript>
if (moz) {
	extendElementModel();
	extendEventObject();
	emulateEventHandlers(["mousemove", "mousedown", "mouseup"]);
}
</SCRIPT>
<STYLE>
#simple {
BORDER-RIGHT: white 1px solid; BORDER-TOP: white 1px solid; Z-INDEX: 2; BACKGROUND: white; LEFT: 60px; OVERFLOW: hidden; BORDER-LEFT: white 1px solid; WIDTH: 400px; BORDER-BOTTOM: white 1px solid; POSITION: absolute; TOP: 80px; HEIGHT: 100px
}
</STYLE>
</head>
<body>
<table class=resizeMe id=simple border="1" width="100%" height="100%">
  <tr>
    <td width="9%">可</td>
    <td width="9%"> </td>
    <td width="9%"> </td>
    <td width="9%"> </td>
    <td width="9%"> </td>
  </tr>
  <tr>
    <td width="9%">以</td>
    <td width="9%"> </td>
    <td width="9%"> </td>
    <td width="9%"> </td>
    <td width="9%"> </td>
  </tr>
  <tr>
    <td width="9%">拖动</td>
    <td width="9%"> </td>
    <td width="9%"> </td>
    <td width="9%"> </td>
    <td width="9%"> </td>
  </tr>
</table>
</body>
</html>


http://www.codefans.net/jscss/code/481.shtml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值