JS 拖动DIV 需要JQUERY 支持
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>自由拖动的DIV层方块</title>
<meta http-equiv="content-type" content="text/html;charset=gb2312">
<script type="text/javascript" src="js/jquery.min.js"></script>
<style type="text/css">
#draggable {
background-color: green;
font-size: 9pt;
padding: 30px;
color: white;
width: 360px;
height: 224px;
position: absolute;
}
</style>
<script type="text/javascript">
var Drager = function () { };
Drager.dom = null;
Drager.selector = null;
Drager.prototype.xdrag = function (dom, selector) {
var obj = this;
obj.selector = selector;
dom.onmousedown = function (e) {
e = obj.getEvent(e);
e.preventDefault && e.preventDefault();
obj.dom = this;
obj.dom.x = e.clientX+$(window).scrollLeft() - obj.dom.offsetLeft;
obj.dom.y = e.clientY + $(window).scrollTop() - obj.dom.offsetTop;
document.onmousemove = function (e) { obj.move(e, obj); };
document.onmouseup = function (e) { obj.end(e, obj); };
};
};
Drager.prototype.getEvent = function (e) {
if (!e) {
e = window.event;
e.target = e.srcElement;
e.layerX = e.offsetX;
e.layerY = e.offsetY;
}
return e;
};
Drager.prototype.move = function (e,srcObj) { e = srcObj.getEvent(e);
var oLeft, oTop;
oLeft = e.clientX + $(window).scrollLeft() - srcObj.dom.x;
oTop = e.clientY + $(window).scrollTop() - srcObj.dom.y; if (srcObj.selector != null) {
if (oLeft > parseInt( srcObj.dom.style.left)) {
if (oLeft + $(srcObj.dom).outerWidth() > $(srcObj.selector).offset().left + $(srcObj.selector).outerWidth()) {
oLeft = $(srcObj.selector).offset().left + $(srcObj.selector).outerWidth() - $(srcObj.dom).outerWidth();
}
} else if (oLeft < parseInt(srcObj.dom.style.left)) {
if (oLeft < $(srcObj.selector).offset().left ) {
oLeft = $(srcObj.selector).offset().left ;
}
}
if (oTop > parseInt(srcObj.dom.style.top)) {
if (oTop + $(srcObj.dom).outerHeight() > $(srcObj.selector).offset().top + $(srcObj.selector).outerHeight()) {
oTop = $(srcObj.selector).offset().top + $(srcObj.selector).outerHeight() - $(srcObj.dom).outerHeight();
}
} else if (oTop < parseInt(srcObj.dom.style.top)) {
if (oTop < $(srcObj.selector).offset().top) {
oTop = $(srcObj.selector).offset().top;
}
}
}
srcObj.dom.style.left = oLeft + 'px';
srcObj.dom.style.top = oTop + 'px';
};
Drager.prototype.end = function (e,srcObj) {
e = srcObj.getEvent(e);
srcObj.dom = document.onmousemove = document.onmouseup = null;
}; var drag = new Drager();
</script>
<script type="text/javascript"> window.onload = function () {
var obj = document.getElementById('draggable');
//第二个参数是限制范围,可不填
drag.xdrag(obj,".container");
} </script>
</head>
<body>
<div class="container" style="width:800px;height:500px; background-color:red;">
<div id="draggable">这个可以拖动!</a></div>
</div> </body>
</html>
JS 拖动DIV 需要JQUERY 支持的更多相关文章
- JS拖动DIV布局
方法一: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...
- JS拖动div的原理
要实现移动窗体,首先要捕获三个参数:1.a = 鼠标点击时的坐标.2.b = 被移动窗体的左顶点坐标.3.c = 鼠标移动时的坐标.然后还要算出你鼠标无论点击窗体哪个位置,移动改变的都是 (d = 窗 ...
- javascript拖动div
div拖动代码,在用此代码之前,你可能需要将你需要拖动的元素style设置position: absolute; #textareaSavaDiv{ position: absolute; right ...
- HTML 通过js实现div的拖动效果
最近做项目,碰到一个问题,需要对div实现拖动效果. 在度娘找了很多,要么觉得代码太长,要么就是效果不理想,不过最后还是找到了一个不错的,感谢大神的留贴,方便了我们,就把代码贴下面了: <!DO ...
- JS实现拖动div层移动
JS实现拖动div层移动 在谈到拖动div层之前,我们有必要来了解下 下面JS几个属性的区别---- pageX,pageY,layerX,layerY,clientX,clientY,screen ...
- js实现可拖动Div
随着时代的变化,越来越感觉到js的重要性,js不仅可以做web页面(如Ext框架),还可以做一些web的特效,这些特效不仅兼容PC,而且兼容手机端,毕竟是基于浏览器的,和平台没关系.现在微软的wind ...
- jQuery 对AMD的支持(Require.js中如何使用jQuery)
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一个可用的模块化 JavaScript 的解决方案. AMD 模块格 ...
- 基于jquery的可拖动div
昨天给大家介绍了一款基于jquery ui漂亮的可拖动div实例,今天要给大家分享一款基于jquery的可拖动div.这款可拖动div只要引用jquery就可以,无需引用jquery ui.还实时记录 ...
- 一款基于jquery ui漂亮的可拖动div实例
今天要给大家带来一款基于jquery ui漂亮的可拖动div实例.这款实例用了图片当背景,div层采用了幽灵透明效果.div拖动是基于jquery ui的.界面非常漂亮.一起看下效果图: 在线预览 ...
随机推荐
- shell编程其实真的很简单(四)
上篇我们学习了shell中条件选择语句的用法.接下来本篇就来学习循环语句.在shell中,循环是通过for, while, until命令来实现的.下面就分别来看看吧. for for循环有两种形式: ...
- arcpy.mapping常用四大件-Layer
arcpy.mapping常用四大件-Layer by 李远祥 图层是地图里面非常重要的组成,几乎所有的制图显示都与图层有关.首先它是连接数据与符号渲染的重要桥梁,其次在出版地图中,图层又与图例关联在 ...
- Ubuntu系统下搭建PPTP类型VPN环境
step1: 安装pptpd 很简单的命令:sudo apt-get install pptpd step2: 修改pptpd的配置 有三个文件需要修改: (1)修改/etc/pptpd.conf,添 ...
- 11 Python+selenium对下拉框(select)进行处理
[环境信息] Python3.4+IE+windows2008 [Select下拉框处理] 1.对于如图1的下拉框,可以用selenium自带的Select类进行选择. 2.定位示例: from se ...
- c++类的构造函数详解
c++类的构造函数详解 一. 构造函数是干什么的 class Counter{ public: // 类Counter的构造函数 // 特点:以类名作为函数名,无返回类 ...
- JAVA包名、类名、变量名命名规则
类名:首字母大写,其他单词中首字母大写,其他小写; 方法名:首字母小写,其他单词中首字母大写,其他小写: 变量:首字母小写,其他单词中首字母大写,其他小写: 包名:全部小写
- 移动OA日程支持费用及评论
业务介绍 AIO7系统最新更新版本在移动OA的日程管理进行改进,增加了创建费用的功能,且在日程批注上也可查看:在日程个人界面和批注界面都支持了评论功能.移动OA上日程对费用及评论的支持,方便用户外出时 ...
- .NET入行之工作前
时间就像轻风一样,刻意感受的时候几乎把你吹倒,不留意的时候又从你身边轻轻飘走了:长此以后,我怕自己会变得麻木,忘记了原来的样子.所以还是决定给自己留点什么,万一哪天忘记了,还可以再翻起来. 工作两年的 ...
- 深入Redux架构
关于redux 之前写了一篇通过一个demo了解Redux,但对于redux的核心方法没有进行深入剖析,在此重新总结学习,完整的代码看这里.(参考了React 技术栈系列教程) 什么情况需要用redu ...
- Java面试05|MySQL及InnoDB引擎
1.InnoDB引擎索引 InnoDB支持的索引有以下几种: (1)哈希索引 (2)全文索引 (1)B+树索引 又可以分为聚集索引与辅助索引 索引的创建可以在CREATE TABLE语句中进行,也可以 ...