[可拖动DIV]刚开通博客顺便就写了点东西!
说说我自己的思路
首先需要一个初始div
div {
border: 1px #333 solid;
width: 200px;
height: 50px;
}
<div id="od">我是一个可拖动div</div>
然后就是鼠标事件,想象一下拖动这个过程需要用到哪些事件。。。
1、鼠标按钮按下事件mousedown
2、鼠标按钮松开事件mouseup
3、鼠标移动事件mousemove
第一步:给div添加鼠标按钮按下事件,这个事件需要完成以下事情
一、获取div到浏览器顶部和左边的距离
二、获取鼠标到浏览器顶部和左边的距离
三、计算出鼠标到div顶部和左边的距离(这里不知道有没有可以直接获取鼠标到div顶部和左边的距离的方法,有兴趣的可以去找一下)
var div_top = $(obj).offset().top;//div距离浏览器顶部的高度
var div_left = $(obj).offset().left;//div距离浏览器左边的高度
var mouse_top = e.clientY;//鼠标距离浏览器顶部的高度
var mouse_left = e.pageX;//鼠标距离浏览器顶部的高度
var mouse_divtop = mouse_top - div_top;//鼠标距离div顶部的高度
var mouse_divleft = mouse_left - div_left;//鼠标距离div左边的高度
四、给Body添加鼠标移动事件(body就是鼠标移动的一个区域,这个可以根据需求做修改),该事件需要完成以下事情
1、隐藏初始div
2、删除新创建的div
3、在body上创建新的div
$("body").bind("mousemove", function (e) {
$("#od").hide();
$(".td").remove();
var html = '<div class="td">' + $("#od").text() + '</div>';
$("body").append(html);
$(".td").css({ "margin-top": e.clientY - mouse_divtop, "margin-left": e.pageX - mouse_divleft });
});
第二步:给Body添加鼠标按钮松开事件,这个事件需要完成以下事情
一、删除Body绑定的鼠标移动事件
二、给新创建的div绑定鼠标按钮按下事件,这个事件要完成的操作就和第一步的第四点一样
$("body").unbind("mousemove");
$(".td").bind("mousedown", function (e) {
});
这样就OK了,是不是很简单!也欢迎大家找出不足的地方!这是本人第一次写随笔。不喜勿喷,嘿嘿!
下面贴出全部代码
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>可拖动DIV</title>
<script src="../js/jquery-1.9.1.min.js"></script>
<style>
div {
border: 1px #333 solid;
width: 200px;
height: 50px;
} .td {
border: 1px #333 solid;
width: 200px;
height: 50px;
}
</style>
</head>
<body>
<div id="od">我是一个可拖动div</div>
</body>
</html>
<script>
$(document).ready(function () {
$("#od").mousedown(function (e) {
Mousetd(this, e);
});
$("body").mouseup(function () {
$("body").unbind("mousemove");
$(".td").bind("mousedown", function (e) {
Mousetd(this, e);
});
});
function Mousetd(obj, e) {
var div_top = $(obj).offset().top;//div距离浏览器顶部的高度
var div_left = $(obj).offset().left;//div距离浏览器左边的高度
var mouse_top = e.clientY;//鼠标距离浏览器顶部的高度
var mouse_left = e.pageX;//鼠标距离浏览器顶部的高度
var mouse_divtop = mouse_top - div_top;//鼠标距离div顶部的高度
var mouse_divleft = mouse_left - div_left;//鼠标距离div左边的高度
$("body").bind("mousemove", function (e) {
$("#od").hide();
$(".td").remove();
var html = '<div class="td">' + $("#od").text() + '</div>';
$("body").append(html);
$(".td").css({ "margin-top": e.clientY - mouse_divtop, "margin-left": e.pageX - mouse_divleft });
});
}
});
</script>
[可拖动DIV]刚开通博客顺便就写了点东西!的更多相关文章
- 开通博客第一天 写一个hello world
申请的博客第一天便被批准了,有了一个和大家交流学习的园地.在今后的日子里期待一起进步.
- hello word!------为什么开通博客以及自我介绍
来北京已经一年半的日子了,已经完全成功熟练的成为了另一个我,没有了半年前刚来时的那种焦虑.急躁和格格不入. 回想起来那段时间,大概是我人生中非常重要的时期了,去年那个夏天,只身一人背上行囊踏上了北上的 ...
- 开通博客啦 Let‘s Go!
入园两年半,在博客园学到很多知识.得到了很大帮助,今天终于开通博客啦,准备将自己所学到的有用知识分享给大家,共同学习共同进步.
- 我在CSDN开通博客啦!
今天,我最终在CSDN开通博客啦!
- 开通博客第一天,记录此时此刻,开始学习加强c#
从2017年6月毕业到现在,不断的学习.net,在工作中不断的加强技术,终于在此时此刻决定开通博客,记录此后每一天学习的技术点,两年来,每天所涉及的技术点很杂,学了这个忘了那个,总感觉在进步却总是觉得 ...
- 在CSDN开通博客专栏后如何发布文章(图文)
今天打开电脑登上CSDN发现自己授予了专栏勋章,有必要了解如何在专栏发布文章. 很感谢已经有前辈给出了图文教程,此文章转载自博客:http://blog.csdn.net/upi2u/article/ ...
- 使用开源文档工具docsify,用写博客的姿势写文档
前提 下面的简介摘抄自docsify的官网 https://docsify.js.org 中的简介 docsify是一个神奇的文档网站生成器.他可以快速帮你生成文档网站.不同于GitBook.Hexo ...
- 第一次写博客,就写如何向外行介绍自己做的是什么,那个我是做web的
如果想外行问你是做什么的,改如何回答.和内行说java后台就可以了,但外行听不懂,我们该如何描述呢? 我的方法是:我做的是java web开发,不是内外的外,是个英文单词web,全名叫world wi ...
- 第一天开通博客,就粗略写一下刚了解TCP/IP协议工作过程
Tcp/Ip协议分为四层:底层到高层顺序 链路层(硬件,网卡这些) 网络层(选择一条传输路径,如何从一台计算机请求另一条计算机) 传输层(遵循TCP(传输控制协议),UDP(用户数距协议)这些协议) ...
随机推荐
- 黑马程序猿_7K面试题之交通灯系统
交通灯信号模拟系统 一.概述 模拟实现十字路口的交通灯管理系统逻辑,详细需求例如以下:(需求直接来源于老师的文档) ① 异步随机生成依照各个路线行驶的车辆. 比如: 由南向而来去往北向的车辆 ...
- Swipe2.1更新——移动Web内容滑块
Swipe JS 是一个轻量级(3.7 kb) mobile slider,支持 1:1 触摸移动(基于精确的触摸位置的内容滑动). 但是我使用一段时间后发现两个bug,所以在官方2.0(官网http ...
- 基于新浪sae使用php生成图片发布图文微博
1.生成图片的代码: <?php header ("Content-type: image/png"); mb_internal_encoding("UTF-8&q ...
- java推断字符串是否为乱码
项目中有一个功能 在IE中GET方式提交会产生乱码 但有两个入口都会走这同一段代码 固不能直接转码,所以要进行推断传过来的该值是不是乱码 可用下面方式验证: java.nio.charset.Char ...
- 进程环境之C程序的存储空间布局
从历史上讲,C程序一直由下面几部分组成: 正文段.这是由CPU执行的机器指令部分.通常,正文段是可共享的,所以即使是频繁执行的程序(如文本编辑器.C编译器和shell等)在存储器中也只需有一个副本,另 ...
- Pitfalls of the Hibernate Second-Level / Query Caches--reference
This post will go through how to setup the Hibernate Second-Level and Query caches, how they work an ...
- Fast portable non-blocking network programming with Libevent--转
Learning Libevent Chapter 0: About this document Chapter 1: A tiny introduction to asynchronous IO. ...
- Linux批量替换文件内容
问题描述:现在需要将rack1目录下*.send文件中的"-ip="替换成“-localIp=10.0.0.1/n-ip=” 刚才那个批量文本内容替换,只能替换内存中的内容,并不会 ...
- C语言---注释
1.单行注释 //注释内容 2.多行注释 /*注释内容*/ 3.#if 0 注释内容 #endif 说明: 1.单行注释//不通用,有些编译器不支持 2.多行注释不能嵌套 3.#if 0 #endif ...
- Office365 InfoPath 表单的设计和应用(原创)
表单的应用:我想到的有2种. 1 做为自定义表单库的模版. 通过发放url(模版链接)给用户来填写表单. 最后将在表单库中得到所有填写的信息列表. 如 2 上传表单做为ContentType 也就是自 ...