博客
关于我
HTML5实现原生拖放的案例
阅读量:111 次
发布时间:2019-02-26

本文共 1340 字,大约阅读时间需要 4 分钟。

之前做项目过程中遇到了一个拖放的效果实现,业务场景是为课程表手动拖拽添加课程。翻看了一下H5新增元素里面,有实现拖放的效果,于是就写了一个demo,效果如下图:

在这里插入图片描述
HTML代码:

HTML
CSS
JS
课程表:

首先,为了使元素可拖动,把 draggable 属性设置为 true :

然后,规定当元素被拖动时触发的事件,在上面的HTML代码中,ondragstart 属性调用了一个函数,start(event),该事件方法是在拖拽元素时触发。

ondragover 事件是在要放置的区域元素上定义,当鼠标拖拽着元素在该区域上方时触发。
ondrop 事件是把元素拖拽到指定区域并松开鼠标时触发。

CSS代码:

.list {   	display: flex;}.item {   	width: 100px;	height: 40px;	margin: 10px;	color: #fff;	text-align: center;	line-height: 40px;	border-radius: 10px;}.blue {   	background-color: royalblue;}.pink {   	background-color: deeppink;}.green {   	background-color: forestgreen;}#web {   	width: 150px;	height: 220px;	border: 1px solid #000;	position: absolute;	top: 150px;	left: 100px;	box-sizing: border-box;	padding: 10px;}

CSS没什么可说的,自己看吧。

JavaScript代码:

//开始拖拽元素function start(ev) {   	id = ev.target.id; //获取拖拽元素的ID}//要放置的区域function toOver(ev) {   	ev.preventDefault(); //阻止默认事件}//放置元素的方法function drop(ev) {   	var app = document.getElementById(id); // 获取拖动的元素对象	var div = document.getElementById(ev.target.id); // 放置区域的元素对象	div.appendChild(app); // 把拖拽对象追加到放置区域中}

上面的JS代码要配合着HTML标签上的事件函数查看,其实,整个过程很简单:

  1. 当鼠标拖动元素时,触发 ondragstart() 事件,获取要拖动元素的ID;
  2. 当鼠标拖拽着元素放置到指定区域时,触发 ondropover() 事件,在这里要阻止默认事件的触发;
  3. 当鼠标拖拽元素到指定区域,并松开鼠标时,触发 ondrop() 事件,获取拖拽元素的对象,追加到放置区域的节点内部;

转载地址:http://ykuk.baihongyu.com/

你可能感兴趣的文章
Netty工作笔记0027---NIO 网络编程应用--群聊系统2--服务器编写2
查看>>
Netty工作笔记0028---NIO 网络编程应用--群聊系统3--客户端编写1
查看>>
Netty工作笔记0030---NIO与零拷贝原理剖析
查看>>
Netty工作笔记0034---Netty架构设计--线程模型
查看>>
Netty工作笔记0050---Netty核心模块1
查看>>
Netty工作笔记0057---Netty群聊系统服务端
查看>>
Netty工作笔记0060---Tcp长连接和短连接_Http长连接和短连接_UDP长连接和短连接
查看>>
Netty工作笔记0063---WebSocket长连接开发2
查看>>
Netty工作笔记0068---Protobuf机制简述
查看>>
Netty工作笔记0070---Protobuf使用案例Codec使用
查看>>
Netty工作笔记0072---Protobuf内容小结
查看>>
Netty工作笔记0074---handler链调用机制实例1
查看>>
Netty工作笔记0077---handler链调用机制实例4
查看>>
Netty工作笔记0081---编解码器和处理器链梳理
查看>>
Netty工作笔记0083---通过自定义协议解决粘包拆包问题1
查看>>
Netty工作笔记0084---通过自定义协议解决粘包拆包问题2
查看>>
Netty工作笔记0085---TCP粘包拆包内容梳理
查看>>
Netty常用组件一
查看>>
Netty常见组件二
查看>>
netty底层——nio知识点 ByteBuffer+Channel+Selector
查看>>