js拖拽效果实现
#附图一张,理解拖动原理
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>drag-demo</title>
<style type="text/css">
#one{width: 100px;height: 100px;background: #66CCCC;color:#FFFFFF;}
</style>
<script type="text/javascript">
window.onload=function(){
dragone('one');
};
// 版本一:仅仅只实现拖拽,忽略其他问题
function dragone(domName){
//获取需要拖到元素的dom对象
var dom = document.getElementById(domName);
//当这个dom元素按下的时候
dom.onmousedown=function(e){
/*
浏览器兼容性判断主要是为了兼容ie8,其他的ie7、ie6没测试,不知道
*/
e = e || window.event;
/*
设置该dom元素为绝对定位absolute
只有设置为position:absolute才能实现left(距离页面左边)和top(距离页面顶部)设置,下面有说明
*/
dom.style.position = 'absolute';
/*
e.clientX:获取鼠标按下点的位置在页面上的X(横向即水平)值
这里假如是:e.clientX=10
e.clientY:获取鼠标按下点的位置在页面上的Y(纵向即垂直)值
这里假如是:e.clientY=20
dom.offsetLeft:获取该元素距离页面左边的距离
这里假如是:dom.offsetLeft = 5
dom.offsetTop:获取该元素距离页面顶部的距离
这里假如是:dom.offsetTop = 6
这里如果不理解可以使用画图工具进行理解
diffX:即5 = 10 - 5,计算出的5就是鼠标按下的x点距离该元素内部左边的值
diffY:即14 = 20 - 6,计算出的14就是鼠标按下的y点距离该元素内部顶部的值
*/
var diffX = e.clientX-dom.offsetLeft;
var diffY = e.clientY-dom.offsetTop;
//当元素被点下并在界面上移动的时候
document.onmousemove=function(e){
e = e || window.event;//浏览器兼容
/*
dom.style.left和dom.style.top即距离页面左边、顶部的距离
即用移动后的鼠标按下x,y值-之前按下点的距离内部左边、距离顶部的值
得到的值即是移动后的元素距离页面的x,y的距离,重新赋值一下给dom元素即可
*/
dom.style.left = e.clientX-diffX+'px';//设置移动时left值
dom.style.top = e.clientY-diffY+'px';//设置移动时top值
};
//鼠标松开的时候
document.onmouseup=function(e){
//去除页面移动、松开事件
//去除后该元素下次再次被点击拖动时,这两个事件又会被绑定上的,无需担心
document.onmousemove = null;
document.onmouseup = null;
};
};
}
</script>
</head>
<body>
<div id="one">版本一</div>
</body>
</html>
js拖拽效果实现的更多相关文章
- React.js实现原生js拖拽效果及思考
一.起因&思路 不知不觉,已经好几天没写博客了...近来除了研究React,还做了公司官网... 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨.所以就用react来实现这个拖 ...
- js拖拽效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 再谈React.js实现原生js拖拽效果
前几天写的那个拖拽,自己留下的疑问...这次在热心博友的提示下又修正了一些小小的bug,也加了拖拽的边缘检测部分...就再聊聊拖拽吧 一.不要直接操作dom元素 react中使用了虚拟dom的概念,目 ...
- js拖拽效果的实现及原理
元素拖拽分成3个步骤:按下鼠标,移动鼠标,松开鼠标. 拖拽原理:按下拖拽元素后开始监听文档中鼠标移动事件,然后再监听鼠标松开事件:鼠标移动时,元素div要随着鼠标一起移动,需要计算元素div位移的距离 ...
- js拖拽效果的实现
1.最基础的写法 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> < ...
- js拖拽效果详细讲解
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- js div浮动层拖拽效果代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
转自<JS实现漂亮的窗口拖拽效果(可改变大小.最大化.最小化.关闭)>:http://www.jb51.net/article/73157.htm 这篇文章主要介绍了JS实现漂亮的窗口 ...
- js实现本地图片文件拖拽效果
如何拖拽图片到指定位置,具体方法如下 在从本地上传图片的时候,如果使用拖拽效果,想想应该是更加的高大上,下面直接上js代码 完整代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
随机推荐
- javascript判断是否为闰年
//判断年份year是否为闰年,是闰年则返回true,否则返回false function isLeapYear(year){ var a = year % 4; var b = year % 100 ...
- SQL必知必会1-13 读书笔记
博主不想写字并向你仍来了一堆代码 1-6 SQL——结构化查询语言,Structured Query Language: 基本按列查询: mysql> SELECT prod_id,prod_n ...
- wamp下Apache配置vhost
1.由于后面虚拟机中需要用到Rewrite所以先编辑Apache的conf目录下的httpd.conf文件.(我的文件位置是:D:\Program Files\wamp\bin\apache\apac ...
- [No0000A9]实用word用法
目录 TOC \o "1-3" \h \z \u 三招去掉页眉那条横线.... PAGEREF _Toc465252982 \h 08D0C9EA79F9BACE118C8200 ...
- [No00008D]腾讯通RTX联系方式批量获取
公司用的RTX让我一直很不爽,QQ比RTX好多少为啥不让用,微信都有企业版了为啥还用腾讯通?终于今天发现唯一的好处是可以从服务器上拉公司妹子们的联系方式!!当然,我要这些联系方式,只是为了联tiao系 ...
- Keepalived使用梳理
keepalived介绍keepalived观察其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,它集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防 ...
- Intellij IDEA 快捷键
Ctrl+Shift + Enter,语句完成 "!",否定完成,输入表达式时按 "!"键 Ctrl+E,最近的文件 Ctrl+Shift+E,最近更改的文件 ...
- 【转】iOS,搜索标签布局
前一阵时间,看过这样一个demo,代码不多,但是简洁易懂. 转自: // 代码地址: https://github.com/iphone5solo/PYSearch // 代码地址: http:/ ...
- 页面局部跳转(iframe)
<script type="text/javascript"> function show() { document.getElementById("ff&q ...
- cocos2d-x 帧动画
ani = cc.Animation:create(); ...... local animate = cc.Animate:create(ani); s:runAction(animate); 发现 ...