原理以后有空再说现在嘛先上代码。。。。

 *{margin:;}
html,body {
width: 100%;
height: 100%;
margin:;
}
#dragBoxContainer{
width: 150px;
padding:10px;
background:#C1C4E0;
}
.dragBox{/* 拖动框 */
text-align: center;
background:#FFFFFF;
border: 1px solid #999999;
padding: 5px;
margin: 10px 0;
cursor: move;
word-break: break-word;
position: relative;
}
#dragPlaceholder{/* 占位符位 */
width: 150px;
height: 33px;
border:1px dotted red;
}
.dragHide{
/*
left: -9999px;
*/
opacity:;
height:;
padding:;
margin:;
}
 <input type="button" value="添加" id="add">
<p id="dragthis">拖动元素是:</p>
<p>
<span id="dragtarget">目标元素是:</span>
<span id="dragtarget_Height">目标中间高度:</span>
</p>
<p id="mouseHeight">鼠标高度是:</p>
<p id="Tips_placeholder">占位符位置在:</p> <div id="dragBoxContainer"></div>
     var drag_this=null;//当前拖动的元素
var drag_target=null;//悬停在那个元素
var DOMnum=0;
$("#add").click(function add(e){
DOMnum++;
$("#dragBoxContainer").append('<div class="dragBox" draggable="true" ondragstart="handleDrag(event)">00'+DOMnum+'</div>');
var cols = document.querySelectorAll('.dragBox');
[].forEach.call(cols, addDnDHandlers);
});
function handleDrag(e){
e.dataTransfer.setData("Text"," ");//兼容火狐
};
function handleDragStart(e) {//(该方法只会触发一次)拖拽元素开始被拖拽的时候触发的事件,此事件作用在被拖曳元素上
e = e || window.event;
var target = e.target || e.srcElement;
console.log("拖动元素瞬间触发");
drag_this=target
console.log(drag_this);
$("#dragthis").html("拖动元素是:"+target.innerHTML);
//$(target).addClass("dragHide");
};
function handleDragEnter(e) {//当拖曳元素进入目标元素的时候触发的事件,此事件作用在目标元素上
e = e || window.event;
var target = e.target || e.srcElement;
console.log("进入目标元素");
drag_target=target;
//console.log(target);
$("#dragtarget").html("目标元素是:"+target.innerHTML)
//$(target).addClass("www");
};
function handleDragOver(e) {//拖拽元素正在目标元素上移动的时候触发的事件,此事件作用在目标元素上
console.log("拖拽元素正在目标元素上移动");
if (!$(drag_this).hasClass("dragHide")) {
$(drag_this).addClass("dragHide");
}
//console.log({drag_this,drag_target});
//var this_top=$(drag_this).offset().top;
var target_top=$(drag_target).offset().top;//目标顶部高度
var target_height=$(drag_target).height()*.5;//目标高
//console.log({this_top,target_top});
//console.log(target_top);
var mouseHeight=e.pageY;//鼠标Y坐标
$("#mouseHeight").html("鼠标高度是:"+mouseHeight)
var judgeTop=target_top+target_height;//目标中间高度:
console.log(target_top,target_height,judgeTop)
$("#dragtarget_Height").html("目标中间高度:"+judgeTop) if(mouseHeight<=judgeTop){//上
var dragPlaceholder=$(drag_target).prev("#dragPlaceholder");
//console.log(dragPlaceholder)
if (dragPlaceholder.length==0) {
$("#dragPlaceholder").remove();
$(drag_target).before('<div id="dragPlaceholder">我是占位符位</div>')
}
$("#Tips_placeholder").html("占位符位置在:上")
}else{//下
var dragPlaceholder=$(drag_target).next("#dragPlaceholder");
if (dragPlaceholder.length==0) {
$("#dragPlaceholder").remove();
$(drag_target).after('<div id="dragPlaceholder">我是占位符位</div>')
}
$("#Tips_placeholder").html("占位符位置在:下")
}
};
function handleDragLeave(e) {
e = e || window.event;
var target = e.target || e.srcElement;
console.log("离开目标元素");
};
function handleDrop(e) {
console.log("被拖拽的元素在目标元素上同时鼠标放开触发的事件");
};
function handleDragEnd(e) {
console.log("鼠标释放了");
e = e || window.event;
var target = e.target || e.srcElement;
//console.log(target); $("#dragPlaceholder").before(drag_this).remove();
$(drag_this).removeClass("dragHide");
};
function add(e) {
console.log("点击触发");
};
function addDnDHandlers(elem) {
//elem.addEventListener('drag', handleDrag, false);
elem.addEventListener('dragstart', handleDragStart, false);
elem.addEventListener('dragenter', handleDragEnter, false)
elem.addEventListener('dragover', handleDragOver, false);
elem.addEventListener('dragleave', handleDragLeave, false);
elem.addEventListener('drop', handleDrop, false);
elem.addEventListener('dragend', handleDragEnd, false);
elem.addEventListener('click', add, false);
};

H5拖动实现代码的更多相关文章

  1. H5拖动火狐自动打开新标签

    写在前面的话:<H5拖动火狐自动打开新标签>原因是为什么百度很多了我就不细说,本文章只说我自己的解决方法... 自定义数据里写个链接,如果火狐自动打开就跳到这个链接 这个页面就写一句话:关 ...

  2. ios9.3.3 h5的js代码全部失效

    做微信公众号页面时,ios9.3.3 h5的js代码全部失效描述: 机型iphone6 plus,ios9.3.3js代码全部失效,刚开始还以为是ios和jq兼容问题, 后来发现是es6语法不能读,导 ...

  3. C++ 无边框的拖动窗口代码

    按下鼠标时,记录下鼠标在窗体上的坐标, 同时用一个BOOL变量记录下鼠标左键按下的状态 弹起左键,则记录状态的布尔变量为FALSE. 处理鼠标移动事件,如果左键同时按下,则为鼠标拖动窗体运动,设置窗体 ...

  4. C#获取H5页面上传图片代码

    基于上一篇的H5压缩上传图片,由于图片是以二进制字符流blob的形式传过来的,所以应该想将其转成bytes类型再进行转换 public void ProcessRequest(HttpContext ...

  5. 小程序支付及H5支付前端代码小结

    小程序支付和H5支付前端都不需要引入其他的js , 只需要后台将相关的参数 ( timeStamp: '', nonceStr: '', package: '', signType: 'MD5', p ...

  6. H5拖动事件复习

    定义和用法 ondrag 事件在元素或者选取的文本被拖动时触发. 拖放是 HTML5 中非常常见的功能. 更多信息可以查看我们 HTML 教程中的 HTML5 拖放. 注意: 为了让元素可拖动,需要使 ...

  7. 拖动div简单事例代码

    事例文件下载 //拖动容器代码 var rDrag = { o: null, init: function (o) { o.onmousedown = this.start; }, start: fu ...

  8. H5页面跳转到小程序代码

    1.H5页面加代码直接打开小程序 <script type="text/javascript src="https://res.wx.qq.com/open/js/jweix ...

  9. 探讨把一个元素从它所在的div 拖动到另一个div内的实现方法

    故事背景: 接到一个新需求,要求用vue搞,主要是拖动实现布局,关键点有:单个组件拖动,一行多列里面的组件拖动,  单个组件可以拖入一行多列里, 单个组件的拖动好实现,关键是把一个组件拖动到另一个类似 ...

随机推荐

  1. 前端学习日记之HTML、CSS 简单总结

    前端学习日记之HTML.CSS 简单总结 标签(空格分隔): html css 前端学习日记 html超文本标记语言 一. h标题标签 h1-h7 <!DOCTYPE html> < ...

  2. PLSQL账号密码

    Product Code:4t46t6vydkvsxekkvf3fjnpzy5wbuhphqzserial Number:601769 password:xs374ca

  3. java38

    字符串内存分析 String str = new String("ABCD") 会先在堆中开辟一个空间,然后去常量池(方法区)中寻找是否有该变量,如果有,直接引用常量池中的内容 如 ...

  4. thymeleaf拆分头部(head)显示异常问题

    问题描述: 刚用thymeleaf不久,考虑到公共头部的导入css,js代码,需要拆分. 拆分之后,bootstrap-select下拉多选框出现“样式异常”,本认为是头部拆分问题,css样式未导入成 ...

  5. go语言的条件语句和循环语句

    一,条件语句 常见的就是if语句: 单支条件语句:     if   条件 :执行语句   (注,如果是没有逻辑运算符连接的话,是可以不需要括号的,也可以加上括号,如:if (条件):执行语句) 双支 ...

  6. LOJ-10109(欧拉回路)

    题目链接:传送门 思路: 就是简单的找欧拉回路,不过要注意dfs边时要将边的编号/2,不然会分不清那条边每被遍历. #include<iostream> #include<cstdi ...

  7. Particle Filters

    |—粒子滤波原理 |—基础代码的建立—|—前进 |                               |—转弯 |                               |—噪音(误差 ...

  8. Python是一门什么样的语言

    先做个总结:Python是一门动态解释型的强类型定义语言. 那何为动态?何为解释?何为强类型呢? 我们需要了解编译型和解释型.静态语言和动态语言.强类型定义语言和弱类型定义语言这6个概念就可知晓. 编 ...

  9. centos7下zabbix记录

    Zabbixrpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm - ...

  10. List、Set、数据结构、Collections

    一.数据结构: 1.什么是数据结构: 一种数据的存储方式 2.常见的4+1种数据结构 堆栈结构: 它是只有一个开口的容器结构 特点: 先进后出(FILO) 例子:弹夹,桶装可比克 队列结构: 它是两端 ...