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 相关文章推荐
一页面多XMLHttpRequest对象
Jan 22 Javascript
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
Mar 06 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
Apr 14 Javascript
用js来刷新当前页面保留参数的具体实现
Dec 23 Javascript
jquery选择器大全 全面详解jquery选择器
Mar 06 Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
Mar 14 Javascript
Ajax中解析Json的两种方法对比分析
Jun 25 Javascript
基于Vue2的移动端开发环境搭建详解
Nov 03 Javascript
BootStrap入门学习第一篇
Aug 28 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
Mar 17 Javascript
AngularJs中$cookies简单用法分析
May 30 Javascript
JQuery常用简单动画操作方法回顾与总结
Dec 07 jQuery
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
全国中波电台频率表
2020/03/11 无线电
PHP中集成PayPal标准支付的实现方法分享
2012/02/06 PHP
PHP开发实现快递查询功能详解
2019/04/08 PHP
jquery插件之easing 动态菜单
2010/08/21 Javascript
瀑布流布局并自动加载实现代码
2013/03/12 Javascript
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
javascript获取文档坐标和视口坐标
2015/05/26 Javascript
js删除Array数组中指定元素的两种方法
2016/08/03 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
2016/09/21 Javascript
简单理解js的冒泡排序
2016/12/19 Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
2017/02/17 Javascript
JS表单传值和URL编码转换
2018/03/03 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
[53:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第一场 1月31日
2021/03/11 DOTA
简单介绍Python中的floor()方法
2015/05/15 Python
老生常谈Python基础之字符编码
2017/06/14 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
2020/06/24 Python
解决python os.mkdir创建目录失败的问题
2018/10/16 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
说说如何遍历Python列表的方法示例
2019/02/11 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
Django密码系统实现过程详解
2019/07/19 Python
深入了解如何基于Python读写Kafka
2019/12/31 Python
10个python爬虫入门实例(小结)
2020/11/01 Python
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
小学信息技术教学反思
2014/02/10 职场文书
幼儿园毕业寄语
2014/04/03 职场文书
2014年秋季开学典礼主持词
2014/08/02 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
银行员工考核评语
2014/12/31 职场文书
2015年校务公开工作总结
2015/05/26 职场文书
python 三边测量定位的实现代码
2021/04/22 Python
详解CSS玩转图片Base64编码
2021/05/25 HTML / CSS
在HTML中引入CSS的几种方式介绍
2021/12/06 HTML / CSS
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python