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 相关文章推荐
JavaScript 函数式编程的原理
Oct 16 Javascript
javascript 判断数组是否已包含了某个元素的函数
May 30 Javascript
中国地区三级联动下拉菜单效果分析
Nov 15 Javascript
js函数排序的实例代码
Jul 01 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
Mar 12 Javascript
jquery实现最简单的滑动菜单效果代码
Sep 12 Javascript
Jquery插件easyUi实现表单验证示例
Dec 15 Javascript
关于List.ToArray()方法的效率测试
Sep 30 Javascript
详解AngularJS controller调用factory
May 19 Javascript
一次围绕setTimeout的前端面试经验分享
Jun 15 Javascript
浅谈angular.copy() 深拷贝
Sep 14 Javascript
Node.js API详解之 dns模块用法实例分析
May 15 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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
PHP第三方登录―QQ登录实现方法
2017/02/06 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
php5.x禁用eval的操作方法
2018/10/19 PHP
javascript之AJAX框架使用说明
2010/04/24 Javascript
读jQuery之二(两种扩展)
2011/06/11 Javascript
js播放wav文件(源码)
2013/04/22 Javascript
js switch case default 的用法示例介绍
2013/10/23 Javascript
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
JQuery报错Uncaught TypeError: Illegal invocation的处理方法
2015/03/13 Javascript
Nodejs获取网络数据并生成Excel表格
2020/03/31 NodeJs
无缝滚动的简单实现代码(推荐)
2016/06/07 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
浅谈React的最大亮点之虚拟DOM
2018/05/29 Javascript
Node.js中读取TXT文件内容fs.readFile()用法
2018/10/10 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
2018/12/06 Javascript
js回调函数仿360开机
2019/12/26 Javascript
深入理解redux之compose的具体应用
2020/01/12 Javascript
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
2020/05/28 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
python中 ? : 三元表达式的使用介绍
2013/10/09 Python
Python中单例模式总结
2018/02/20 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
Python模块、包(Package)概念与用法分析
2019/05/31 Python
django多个APP的urls设置方法(views重复问题解决)
2019/07/19 Python
PyTorch加载自己的数据集实例详解
2020/03/18 Python
Python数组拼接np.concatenate实现过程
2020/04/18 Python
Java byte数组操纵方式代码实例解析
2020/07/22 Python
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
体育专业个人的求职信范文
2013/09/21 职场文书
道德模范先进事迹
2014/02/14 职场文书
2015年乡镇统计工作总结
2015/04/22 职场文书
一个家长教育孩子的心得体会
2016/01/15 职场文书
Python socket如何解析HTTP请求内容
2022/02/12 Python
Dubbo+zookeeper搭配分布式服务的过程详解
2022/04/03 Java/Android