html5拖曳操作 HTML5实现网页元素的拖放操作


Posted in HTML / CSS onJanuary 02, 2013

HTML5之前,要实现网页元素的拖放操作,需要依靠mousedown、mousemove、mouseup等API,通过大量的JS代码来实现;HTML5中引入了直接支持拖放操作的API,大大简化了网页元素的拖放操作编程难度,并且这些API除了支持浏览器内部元素的拖放外,同时支持浏览器和其它应用程序之间的数据互相拖动。

本文通过一个简单示例,演示HTML5中拖放API的使用方法。

场景:

如下图所示,我们要实现:

通过拖放将照片从左侧“相册”区域拖拽到右侧“垃圾箱”区域;拖拽过程中,“温馨提示”部分要及时提醒,当前正在进行拖放操作;

html5拖曳操作 HTML5实现网页元素的拖放操作

实现方法:

如上界面的HTML代码比较简单,如下:

复制代码
代码如下:

<!DOCTYPE HTML>
<html>
<head>
<title>HTML5实现拖拽操作</title>
<meta charset="utf-8"/>
<style>
.album
{
border: 3px dashed #ccc;
float: left;
margin: 10px;
min-height: 100px;
padding: 10px;
width: 220px;
}
</style>
</head>
<body">
<div id="info">
<h2>温馨提示:可将照片直接拖到垃圾箱中</h2>
</div>
<div id="album" class="album">
<h2>相册</h2>
<img draggable="true" id="img1" src="img/bg_01.png" />
<img draggable="true" id="img2" src="img/bg_02.png" />
<img draggable="true" id="img3" src="img/bg_03.png" />
</div>
<div id="trash" class="album">
<h2>垃圾箱</h2>
</div>
<br/>
</body>
</html>

注意:如果要实现拖放操作,需要在待拖放的元素上增加draggable="true"属性;

接下来,再在onload事件中增加如下JS代码即可,注释比较详尽,就不再单独解释。

复制代码
代码如下:

<script>
function init(){
var info = document.getElementById("info");
//获得被拖放的元素,本示例为相册所在的DIV
var src = document.getElementById("album");
//开始拖放操作
src.ondragstart = function (e) {
//获得被拖放的照片ID
var dragImgId = e.target.id;
//获得被拖动元素
var dragImg = document.getElementById(dragImgId);
//拖放操作结束
dragImg.ondragend = function(e){
//恢复提醒信息
info.innerHTML="<h2>温馨提示:可将照片直接拖到垃圾箱中</h2>";
};
e.dataTransfer.setData("text",dragImgId);
};
//拖放过程中
src.ondrag = function(e){
info.innerHTML="<h2>--照片正在被拖动--</h2>";
}
//获得拖放的目标元素
var target = document.getElementById("trash");
//关闭默认处理;
target.ondragenter = function(e){
e.preventDefault();
}
target.ondragover = function(e){
e.preventDefault();
}
//有东西拖放到了目标元素
target.ondrop = function (e) {
var draggedID = e.dataTransfer.getData("text");
//获取相册中的DOM对象
var oldElem = document.getElementById(draggedID);
//从相册DIV中删除该照片的节点
oldElem.parentNode.removeChild(oldElem);
//将被拖动的照片DOM节点添加到垃圾桶DIV中;
target.appendChild(oldElem);
info.innerHTML="<h2>温馨提示:可将照片直接拖到垃圾箱中</h2>";
e.preventDefault();
}
}
</script>

实现效果:

html5拖曳操作 HTML5实现网页元素的拖放操作html5拖曳操作 HTML5实现网页元素的拖放操作

HTML / CSS 相关文章推荐
a标签的css样式四个状态
Mar 09 HTML / CSS
css背景图片的背景裁切、背景透明度、背景变换等效果运用
Dec 24 HTML / CSS
css3弹性盒模型(Flexbox)详细介绍
Oct 08 HTML / CSS
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
Oct 11 HTML / CSS
基础的CSS3弹性盒Flexbox布局使用实例
Apr 08 HTML / CSS
基于Modernizr 让网站进行优雅降级的分析
Apr 21 HTML / CSS
HTML5 Canvas——用路径描画线条实例介绍
Jun 09 HTML / CSS
使用Html5实现异步上传文件,支持跨域,带有上传进度条
Sep 17 HTML / CSS
手机端用rem+scss做适配的详解
Nov 15 HTML / CSS
纯CSS实现酷炫的霓虹灯效果
Apr 13 HTML / CSS
css让页脚保持在底部位置的四种方案
Jul 23 HTML / CSS
table不让td文字溢出操作方法
Dec 24 HTML / CSS
使用CSS实现弹性视频html5案例实践
Dec 26 #HTML / CSS
HTML5中实现拖放效果无须借助javascript
Dec 26 #HTML / CSS
html5 application cache遇到的严重问题
Dec 26 #HTML / CSS
html5 web本地存储将取代我们的cookie
Dec 26 #HTML / CSS
html5之Canvas路径绘图、坐标变换应用实例
Dec 26 #HTML / CSS
html5声频audio和视频video等新特性详细说明
Dec 26 #HTML / CSS
html5-Canvas可以在web中绘制各种图形
Dec 26 #HTML / CSS
You might like
PHP可变函数的使用详解
2013/06/14 PHP
php cookie使用方法学习笔记分享
2013/11/07 PHP
php图片缩放实现方法
2014/02/20 PHP
CI映射(加载)数据到view层的方法
2016/03/28 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
通过隐藏option实现select的联动效果
2009/11/10 Javascript
javascript replace()正则替换实现代码
2010/02/26 Javascript
js 中 document.createEvent的用法
2010/08/29 Javascript
jQuery给多个不同元素添加class样式的方法
2015/03/26 Javascript
Bootstrap学习笔记之css组件(3)
2016/06/07 Javascript
JavaScript数组和对象的复制
2017/03/21 Javascript
深入理解ES6中let和闭包
2018/02/22 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
2018/05/23 Javascript
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
vue实现分页栏效果
2019/06/28 Javascript
a标签调用js的方法总结
2019/09/05 Javascript
[01:03]DOTA2新的征程 你的脚印值得踏上
2014/08/13 DOTA
跟老齐学Python之重回函数
2014/10/10 Python
python引用DLL文件的方法
2015/05/11 Python
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
Python获取当前路径实现代码
2017/05/08 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
Python坐标线性插值应用实现
2019/11/13 Python
django为Form生成的label标签添加class方式
2020/05/20 Python
Python自定义sorted排序实现方法详解
2020/09/18 Python
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
canvas绘制圆角头像的实现方法
2019/01/17 HTML / CSS
香蕉共和国Banana Republic官网:美国GAP旗下偏贵族风格服饰品牌
2016/11/21 全球购物
机械设计职业生涯规划书
2013/12/27 职场文书
初中生操行评语大全
2014/04/24 职场文书
个人求职信格式范文
2015/03/20 职场文书
房产证明范本
2015/06/19 职场文书
2015迎新晚会活动总结
2015/07/16 职场文书
2016入党积极分子党校培训心得体会
2016/01/06 职场文书
Python基础之变量的相关知识总结
2021/06/23 Python