javascript实现鼠标拖动改变层大小的方法


Posted in Javascript onApril 30, 2015

本文实例讲述了javascript实现鼠标拖动改变层大小的方法。分享给大家供大家参考。具体实现方法如下:

<html>
<head>
<title>拖动改变层的大小</title>
<meta content="text/html; charset=gb2312" http-equiv="Content-Type">
<style> {
box-sizing: border-box; moz-box-sizing: border-box
}
#testDiv { background-color: buttonface; background-repeat: repeat; 
background-attachment: scroll; color: #3969A5; height: 300px; 
left: 30px; overflow: hidden; width: 500; z-index: 2; 
border: 2px outset white; margin: 0px; padding: 2px; 
background-position: 0% 50% }
body { font-family: Verdana; font-size: 9pt }
#innerNice { background-color: white; background-repeat: repeat;
background-attachment: 
scroll; color: #3969A5; height: 100%; overflow: auto; 
width: 100%; border: 2px inset white; padding: 8px; 
background-position: 0% 50% }
</style>
<SCRIPT language=javascript>
var theobject = null; 
function resizeObject() {
this.el = null; //pointer to the object
this.dir = ""; //type of current resize (n,s,e,w,ne,nw,se,sw)
this.grabx = null; //Some useful values
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; //The distance from the edge in pixels
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; //The smallest width possible
yMin = 8; // height
el = getReal(event.srcElement, "className", "resizeMe");
if (el.className == "resizeMe") {
str = getDirection(el);
//Fix the cursor
if (str == "") str = "default";
else str += "-resize";
el.style.cursor = str;
}
//Dragging starts here
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>
</head>
<body>
<div class="resizeMe" id="testDiv">
<div id="innerNice">
<p align="center"> </p>
<p align="center">
请在边框处拖动鼠标</p>
<p> </p>
<p> </p>
<p> </p>
</div>
</div>
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
会自动逐行上升的文本框
Jun 30 Javascript
javascript实现的距离现在多长时间后的一个格式化的日期
Oct 29 Javascript
Extjs4 类的定义和扩展实例
Jun 28 Javascript
js实现简单的可切换选项卡效果
Apr 10 Javascript
js HTML5 Ajax实现文件上传进度条功能
Feb 13 Javascript
JS实现队列与堆栈的方法
Apr 21 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
Mar 03 Javascript
Node.js中流(stream)的使用方法示例
Jul 16 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
Nov 20 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
Aug 24 Javascript
vue读取本地的excel文件并显示在网页上方法示例
May 29 Javascript
Vue2.0 ES6语法降级ES5的操作
Oct 30 Javascript
jQuery实现伸展与合拢panel的方法
Apr 30 #Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
Apr 30 #Javascript
jQuery层动画定位滑动效果的方法
Apr 30 #Javascript
jquery中$each()方法的使用指南
Apr 30 #Javascript
jQuery实现手机号码输入提示功能实例
Apr 30 #Javascript
javascript实现checkbox全选的代码
Apr 30 #Javascript
javascript实现的固定位置悬浮窗口实例
Apr 30 #Javascript
You might like
PHP开发框架kohana中处理ajax请求的例子
2014/07/14 PHP
php短网址和数字之间相互转换的方法
2015/03/13 PHP
详解使用php调用微信接口上传永久素材
2017/04/11 PHP
php表单处理操作
2017/11/16 PHP
PHP命令Command模式用法实例分析
2018/08/08 PHP
dropdownlist之间的互相联动实现(显示与隐藏)
2009/11/24 Javascript
ajax上传时参数提交不更新等相关问题
2012/12/11 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
JavaScript变量的作用域全解析
2015/08/14 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
Ajax的概述与实现过程
2016/11/18 Javascript
微信小程序 video详解及简单实例
2017/01/16 Javascript
vue 里面使用axios 和封装的示例代码
2017/09/01 Javascript
js中this对象用法分析
2018/01/05 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
2018/06/22 Javascript
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
浅析Git版本控制器使用
2017/12/10 Python
python实现朴素贝叶斯分类器
2018/03/28 Python
浅析python继承与多重继承
2018/09/13 Python
利用arcgis的python读取要素的X,Y方法
2018/12/22 Python
django 邮件发送模块smtp使用详解
2019/07/22 Python
python实现邮件发送功能
2019/08/10 Python
Python plt 利用subplot 实现在一张画布同时画多张图
2021/02/26 Python
德国网上花店:Valentins
2018/08/15 全球购物
JD Sports西班牙:英国领先的运动服装公司
2020/01/06 全球购物
Ooni英国官网:披萨烤箱
2020/05/31 全球购物
优秀毕业生推荐信
2013/11/02 职场文书
员工工作及收入证明
2014/10/28 职场文书
2014年健康教育工作总结
2014/11/20 职场文书
美术教师个人工作总结
2015/02/06 职场文书
2016元旦晚会主持人开场白和结束语
2015/12/03 职场文书
服务器间如何实现文件共享
2022/05/20 Servers