《HTML5 开发实例大全》——1.33 实现拖曳和拖放处理

简介:

本节书摘来自异步社区《HTML5 开发实例大全》一书中的第1章,第1.33节,作者: 张明星 更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.33 实现拖曳和拖放处理


a6b024576c720293ce34ad6dc41f4d3966cf47ad

实例说明

在HTML 5 中,可以使用如下对象和属性实现拖曳处理。

  • DataTransfer 对象:拖曳对象用来传递的媒介,使用一般为Event.dataTransfer。
  • draggable 属性:就是标签元素要设置draggable=true,否则不会有效果,例如:
<divtitle="拖曳我"draggable="true">列表1</div>

上述对象和属性支持如下鼠标事件和方法。

  • ondragstart 事件:当拖曳元素开始被拖曳的时候触发的事件,此事件作用在被拖曳元素上。
  • ondragenter 事件:当拖曳元素进入目标元素的时候触发的事件,此事件作用在目标元素上。
  • ondragover 事件:拖曳元素在目标元素上移动的时候触发的事件,此事件作用在目标元素上。
  • ondrop 事件:被拖曳的元素在目标元素上同时鼠标键放开触发的事件,此事件作用在目标元素上。
  • ondragend 事件:当拖曳完成后触发的事件,此事件作用在被拖曳元素上。
  • Event.preventDefault() 方法:阻止默认的一些事件方法等执行。在ondragover中一定要执行preventDefault(),否则ondrop事件不会被触发。另外,如果是从其他应用软件或是文件中拖东西进来,尤其是图片的时候,默认的动作是显示这个图片或是相关信息,并不是真的执行drop。此时需要用document的ondragover事件把它直接干掉。
  • Event.effectAllowed 属性:就是拖曳的效果。

本实例分别演示了鼠标光标在滑向某个位置时的不同显示样式,并且在拖动鼠标光标时也有不同的样式。

具体实现

使用Dreamweaver创建一个名为“033.html”的文件,具体代码如下所示:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>aaa</title>
<style type="text/css">
body{font-size:84%;}
.dustbin{width:100px; height:260px; line-height:1.4; background-color:gray; font-size:36px; font-family:"微软雅黑", "Yahei Mono"; text-align:center; text-shadow:-1px -1px #bbb; float:left;}
.dragbox{width:500px; padding-left:20px; float:left;}
.draglist{padding:10px; margin-bottom:5px; border:2px dashed #ccc; background-  
color:#eee; cursor:move;}
.draglist:hover{border-color:#cad5eb; background-color:#f0f3f9;}
.dragremind{padding-top:2em; clear:both;}
</style>
</head>
<body>
<div class="dustbin"><br />A<br />B<br />C</div> 
<div class="dragbox"> 
  <div class="draglist" title="AA" draggable="true">AAA1</div> 
  <div class="draglist" title="BB" draggable="true">AAA2</div> 
  <div class="draglist" title="CC" draggable="true">AAA3</div> 
  <div class="draglist" title="DD" draggable="true">AAA4</div> 
  <div class="draglist" title="EE" draggable="true">AAA5</div> 
  <div class="draglist" title="FF" draggable="true">AAA6</div> 
</div> 
<div class="dragremind"></div> 
<script>
  var $ = function(selector) { 
    /*简单的选择器方法*/ 
    ... 
  }; 

  var eleDustbin = $(".dustbin")[0], eleDrags = $(".draglist"), lDrags = eleDrags.length, eleRemind = $(".dragremind")[0], eleDrag = null; 
  for (var i=0; i<lDrags; i+=1) { 
    eleDrags[i].onselectstart = function() { 
      return false; 
    }; 
    eleDrags[i].ondragstart = function(ev) { 
      /*拖曳开始*/ 
      //拖曳效果 
      ev.dataTransfer.effectAllowed = "move"; 
      ev.dataTransfer.setData("text", ev.target.innerHTML); 
      ev.dataTransfer.setDragImage(ev.target, 0, 0); 
      eleDrag = ev.target; 
      return true; 
    }; 
    eleDrags[i].ondragend = function(ev) { 
      /*拖曳结束*/ 
      ev.dataTransfer.clearData("text"); 
      eleDrag = null; 
      return false 
    }; 
  } 
  eleDustbin.ondragover = function(ev) { 
    /*拖曳元素在目标元素头上移动的时候*/ 
    ev.preventDefault(); 
    return true; 
  }; 

  eleDustbin.ondragenter = function(ev) { 
    /*拖曳元素进入目标元素头上的时候*/ 
    this.style.color = "#ffffff"; 
    return true; 
  }; 
  eleDustbin.ondrop = function(ev) { 
    /*拖曳元素进入目标元素头上,同时鼠标键松开的时候*/ 
    if (eleDrag) { 
      eleRemind.innerHTML = '<strong>"' + eleDrag.innerHTML + '"</strong>被扔进了垃圾箱'; 
      eleDrag.parentNode.removeChild(eleDrag); 
    } 
    this.style.color = "#000000"; 
    return false; 
  }; 


</script>
</body>
</html>

执行后的效果如图1-54所示。


<a href=https://yqfile.alicdn.com/6e48200f4ef715b285d1d9bf8c480667dbc7aa65.png" >
相关文章
|
9月前
|
移动开发 前端开发 JavaScript
基于 HTML5 和 Canvas 开发的在线图片编辑器
基于 HTML5 和 Canvas 开发的在线图片编辑器
176 0
|
10月前
|
存储 移动开发 编解码
基于HTML5开发的Markdown在线编辑器
Markdown是一种轻量级标记语言,以其简洁易读的格式而备受程序员和作者们的青睐。随着互联网的发展,越来越多的在线Markdown编辑器应运而生,为用户提供了更加便捷、高效的写作和编辑环境。本文将探讨基于HTML5开发的Markdown在线编辑器的设计原理、功能特点以及技术优势。
209 4
|
5月前
|
移动开发 HTML5
HTML5 拖放(Drag 和 Drop)2
为了实现元素的可拖放功能,首先需将元素的 `draggable` 属性设为 `true`。接着,使用 `ondragstart` 事件指定拖动开始时的动作,通过 `dataTransfer.setData()` 设置拖动数据的类型和值。`ondragover` 事件用于确定放置位置,并通过 `event.preventDefault()` 允许放置。最后,`ondrop` 事件触发时执行放置操作,使用 `dataTransfer.getData()` 获取拖动数据并将其追加到目标元素中。
|
5月前
|
Web App开发 移动开发 iOS开发
HTML5 拖放(Drag 和 Drop)1
HTML5拖放功能是标准的一部分,允许用户将任何元素从一个位置拖放到另一个位置。此功能在主流浏览器如IE、Firefox、Chrome和Safari中得到支持(注意Safari 5.1.2除外)。通过拖放,可以实现更直观的交互体验,例如将RUNOOB.COM图标拖入指定矩形框内。
|
6月前
|
XML 数据格式
HTML 实例解析
本文介绍了HTML中常见元素的使用方法,包括`&lt;p&gt;`、`&lt;body&gt;`和`&lt;html&gt;`等。详细解析了这些元素的结构和作用,并强调了正确使用结束标签的重要性。此外,还提到了空元素的使用及大小写标签的规范。
|
7月前
|
移动开发 JavaScript API
HTML5 拖放详解
HTML5 的拖放功能增强了网页的互动性和用户友好性,允许用户通过拖动操作移动网页元素。其核心包括拖动源和放置目标,并提供了 `draggable` 属性及多个事件(如 `dragstart`、`dragover` 和 `drop`)来实现这一功能。示例代码展示了如何使用这些 API 创建一个简单的拖放组件,通过设置样式和监听事件来提升用户体验。在实际应用中,需注意样式提示和浏览器兼容性测试。
|
8月前
|
前端开发 Java 关系型数据库
通过HTML网页对mysql数据库进行增删改查(CRUD实例)
通过HTML网页对mysql数据库进行增删改查(CRUD实例)
516 0
|
11月前
|
存储 移动开发 编解码
基于HTML5开发的Markdown在线编辑器
Markdown是一种轻量级标记语言,以其简洁易读的格式而备受程序员和作者们的青睐。随着互联网的发展,越来越多的在线Markdown编辑器应运而生,为用户提供了更加便捷、高效的写作和编辑环境。本文将探讨基于HTML5开发的Markdown在线编辑器的设计原理、功能特点以及技术优势。
122 1
基于HTML5开发的Markdown在线编辑器
|
10月前
|
缓存 移动开发 前端开发
在PWA的开发中,HTML与CSS作为前端技术的基础,发挥着至关重要的作用
【6月更文挑战第14天】PWA(渐进式网页应用)借助HTML和CSS,提供接近原生应用的体验。HTML构建页面结构和内容,响应式设计适应各种设备,语义化标签提升可访问性,Manifest文件配置应用元数据,离线页面保证无网时体验。CSS则用于定制主题样式,创建动画效果,实现响应式布局,并管理字体和图标。两者协同工作,确保PWA在不同环境下的优秀性能和用户体验。随着前端技术进步,HTML与CSS在PWA中的应用将更加深入。
75 2
|
11月前
HTML 实例
HTML 实例。
40 1