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 相关文章推荐
网站被黑的假象--ARP欺骗之页面中加入一段js
May 16 Javascript
struts2 jquery 打造无限层次的树
Oct 23 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
Mar 18 Javascript
Bootstrap图片轮播效果详解
Oct 17 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
Dec 13 Javascript
jQuery中ajax请求后台返回json数据并渲染HTML的方法
Aug 08 jQuery
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
Feb 02 Javascript
JS实现图片轮播效果实例详解【可自动和手动】
Apr 04 Javascript
element-ui上传一张图片后隐藏上传按钮功能
May 22 Javascript
jQuery-Citys省市区三级菜单联动插件使用详解
Jul 26 jQuery
详解为element-ui的Select和Cascader添加弹层底部操作按钮
Feb 07 Javascript
react使用antd的上传组件实现文件表单一起提交功能(完整代码)
Jun 29 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入门学习知识点五 关于php数组的几个基本操作
2011/07/14 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
2015/03/10 PHP
微信获取用户地理位置信息的原理与步骤
2015/11/12 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
2018/05/11 PHP
php 实现银联商务H5支付的示例代码
2019/10/12 PHP
Laravel 前端资源配置教程
2019/10/18 PHP
DOM相关内容速查手册
2007/02/07 Javascript
浅谈js 闭包引起的内存泄露问题
2015/06/22 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
nodeJS删除文件方法示例
2016/12/25 NodeJs
canvas绘制七巧板
2017/02/03 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
Vue 项目代理设置的优化
2018/04/17 Javascript
Vue 动态设置路由参数的案例分析
2018/04/24 Javascript
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
Vue 电商后台管理项目阶段性总结(推荐)
2020/08/22 Javascript
使用Python中的cookielib模拟登录网站
2015/04/09 Python
介绍Python中内置的itertools模块
2015/04/29 Python
Python如何实现MySQL实例初始化详解
2017/11/06 Python
Python中的CSV文件使用&quot;with&quot;语句的方式详解
2018/10/16 Python
解决在keras中使用model.save()函数保存模型失败的问题
2020/05/21 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
高中军训感想800字
2014/02/23 职场文书
党的群众路线教育实践活动总结报告
2014/04/28 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
怎么写工作检讨书
2014/11/16 职场文书
幼儿园大班教师个人工作总结
2015/02/05 职场文书
护士先进个人总结
2015/02/13 职场文书
KTV员工管理制度
2015/08/06 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
Vue如何实现组件间通信
2021/05/15 Vue.js