• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > html5指南(3)-实现拖拽功能

html5指南(3)-实现拖拽功能

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含html5,拖拽功能等相关知识,匿名希望在学习及工作中可以帮助到您
  本文的内容是关于在html5中如何实现html元素拖拽功能。在html5之前要实现拖拽,需要借助js,现在html5内部就支持了拖拽的功能,但是要实现稍微复杂的功能还是少不了js的帮忙。下面我们看几个例子。

  1.创建拖拽对象

  我们可以通过draggable属性告诉浏览器,哪些元素需要实现拖拽功能。draggable有三个值:true:元素可以被拖拽;false:元素不能被拖拽;auto:浏览器自己判断元素是否能被拖拽。

  系统默认值是auto,但auto情况下浏览器对不同元素拖拽功能的支持是不一样,如:支持img对象,不支持p对象。所以,如果需要拖拽一个元素,最好还是把draggale设置为true。下面我们看一个例子:

<!DOCTYPE HTML><html><head>
    <title>Example</title>
    <style>
        #src > *        {
            float: left;
        }
        #target, #src > img        {
            border: thin solid black;
            padding: 2px;
            margin: 4px;
        }
        #target        {
            height: 123px;
            width: 220px;
            text-align: center;
            display: table;
        }
        #target > p        {
            display: table-cell;
            vertical-align: middle;
        }
        #target > img        {
            margin: 1px;
        }
    </style></head><body>
    <p id="src">
        <img draggable="true" id="car1" src="img/1.jpg" alt="car1" />
        <img draggable="true" id="car2" src="img/2.jpg" alt="car2" />
        <img draggable="true" id="car3" src="img/3.jpg" alt="car3" />
        <p id="target">
            <p id="msg">
                drop here</p>
        </p>
    </p>
    <script>
        var src = document.getElementById("src");        
        var target = document.getElementById("target");    
        </script>
        </body>
        </html>

运行效果:

  2.处理拖拽事件

  现在我们来了解拖拽相关的事件,有两种类型的事件,一种是拖拽对象的事件,一种是投放区的事件。拖拽事件包括:dragstart:当元素拖拽开始触发;drag:在元素拖拽过程中触发;dragend:元素拖拽结束时触发。下面我们就看一个例子:

<!DOCTYPE HTML><html><head>
    <title>Example</title>
    <style>
        #src > *        {
            float: left;
        }
        #target, #src > img        {
            border: thin solid black;
            padding: 2px;
            margin: 4px;
        }
        #target        {
            height: 123px;
            width: 220px;
            text-align: center;
            display: table;
        }
        #target > p        {
            display: table-cell;
            vertical-align: middle;
        }
        #target > img        {
            margin: 1px;
        }
        img.dragged        {
            background-color: Orange;
        }
    </style></head><body>
    <p id="src">
        <img draggable="true" id="car1" src="img/1.jpg" alt="car1" />
        <img draggable="true" id="car2" src="img/2.jpg" alt="car2" />
        <img draggable="true" id="car3" src="img/3.jpg" alt="car3" />
        <p id="target">
            <p id="msg">
                drop here</p>
        </p>
    </p>
    <script>
        var src = document.getElementById("src");        
        var target = document.getElementById("target");        
        var msg = document.getElementById("msg");
        src.ondragstart = function (e) {
            e.target.classList.add("dragged");
        }
        src.ondragend = function (e) {
            e.target.classList.remove("dragged");
            msg.innerHTML = "drop here";
        }
        src.ondrag = function (e) {
            msg.innerHTML = e.target.id;
        }    </script></body></html>

运行效果:

  3.创建投放区

  我们来看投放区相关的事件:dragenter:当拖拽对象进入投放区时触发;dragover:拖拽对象在投放区内移动时触发;dragleave:拖拽对象没有投放到投放区,离开投放区的时候触发;drop:拖拽对象投放在投放区时触发。

  我们来看一个例子:

<!DOCTYPE HTML><html><head>
    <title>Example</title>
    <style>
        #src > *        {
            float: left;
        }
        #target, #src > img        {
            border: thin solid black;
            padding: 2px;
            margin: 4px;
        }
        #target        {
            height: 123px;
            width: 220px;
            text-align: center;
            display: table;
        }
        #target > p        {
            display: table-cell;
            vertical-align: middle;
        }
        #target > img        {
            margin: 1px;
        }
        img.dragged        {
            background-color: lightgrey;
        }
    </style></head><body>
    <p id="src">
        <img draggable="true" id="car1" src="img/1.jpg" alt="car1" />
        <img draggable="true" id="car2" src="img/2.jpg" alt="car2" />
        <img draggable="true" id="car3" src="img/3.jpg" alt="car3" />
        <p id="target">
            <p id="msg">
                drop here</p>
        </p>
    </p>
    <script>
        var src = document.getElementById("src");        
        var target = document.getElementById("target");        
        var msg = document.getElementById("msg");        
        var draggedID;
        target.ondragenter = handleDrag;
        target.ondragover = handleDrag;        
        function handleDrag(e) {
            e.preventDefault();
        }
        target.ondrop = function (e) {            
        var newElem = document.getElementById(draggedID).cloneNode(false);
            target.innerHTML = "";
            target.appendChild(newElem);
            e.preventDefault();
        }
        src.ondragstart = function (e) {
            draggedID = e.target.id;
            e.target.classList.add("dragged");
        }
        src.ondragend = function (e) {            
        var elems = document.querySelectorAll(".dragged");            
        for (var i = 0; i < elems.length; i++) {
                elems[i].classList.remove("dragged");
            }
        }    </script></body></html>

运行结果:

  4.使用DataTransfer

  我们使用DataTransfer从拖拽对象向投放区传递数据。DataTransfer有下面的属性和方法:types:返回数据的格式;getData(<format>):返回指定格式数据;setData(<format>, <data>):设置指定格式数据;clearData(<format>):移除指定格式数据;files:返回已经投放的文件数组。

  我们来看下面的例子,他实现的效果和例3一样:




 

您可能想查找下面的文章:

  • HTML5知识点总结
  • HTML5的本地存储
  • HTML5本地存储之IndexedDB
  • Html5实现文件异步上传功能
  • Html5新标签datalist实现输入框与后台数据库数据的动态匹配
  • 详解HTML5 window.postMessage与跨域
  • HTML5拖放API实现拖放排序的实例代码
  • 解决html5中video标签无法播放mp4问题的办法
  • HTML5新特性 多线程(Worker SharedWorker)
  • Html5新增标签有哪些

相关文章

  • 2018-12-03canvas如何绘制时钟?canvas画环形时钟的实现过程
  • 2018-12-03如何使用canvas画出平滑的曲线?(代码)
  • 2018-12-03html5使用html2canvas实现浏览器截图
  • 2017-08-06使用CSS实现弹性视频html5案例实践
  • 2017-08-06html5 的a标签 Href 拨电话的写法
  • 2017-08-06基于第一个PhoneGap(cordova)的应用详解
  • 2018-12-03听到别人说H5页面时总觉得很恶心,怎么办?
  • 2018-12-03HTML5实现锚点时请使用id取代name_html5教程技巧
  • 2017-08-06html5播放视频且动态截图实现步骤与代码(支持safari其他未测试)
  • 2017-08-06html5基础教程常用技巧整理

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • HTML5 history新特性pushState、replaceState及两者的区别 _html5教程技巧
    • 响应式布局是什么?响应式布局的介绍
    • html 里面的 role 属性是什么意思和用途?
    • 谷歌AMP和百度MIP对SEO的影响
    • 作为一个前端,看到怎样的网页效果,你一定会停下来看看他的源码?
    • html5各种页面切换效果和模态对话框用法总结
    • html5的新增的标签和废除的标签简要概述
    • HTML5基本布局
    • 使用HTML5的File实现base64和图片的互转
    • HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有