HTML5:一个拖拽网页元素的例子

关键字:HTML5, Drag&Drop, JavaScript, CSS

运行环境:Chrome

    <!DOCTYPE html>
    <html>
    <head>
        <title>example</title>

        <style type="text/css">
            .main-area {
                margin-left: 10%;
                margin-right: 10%;
                min-width: 600px;
            }

            ul {
                padding-left: 0;
                text-align:center;
            }

            li {
                word-break: break-all;
                display: inline-block;
                width: 400px;
                height: 200px;
                margin: 3px;
                border-radius: 3px;
                box-shadow: 1px 1px 3px rgba(0, 0, 0, 1);
            }
        </style>
    </head>
    <body>
        <script>
            // on source element
            function dragstart (ev) {
                ev.dataTransfer.effectAllowed = "move";
                ev.dataTransfer.setData("srcId", ev.currentTarget.id);
                ev.dataTransfer.setDragImage(ev.currentTarget, 0, 0);
            }
            function dragend(ev) {
                ev.dataTransfer.clearData("srcId");
            }

            // on target element
            function dragover(ev) {
                ev.preventDefault();
            }
            function drop(ev) {
                var srcId = ev.dataTransfer.getData("srcId");
                var srcObj = document.getElementById(srcId);
                if(srcObj != ev.currentTarget){
                    var list = document.getElementById(‘list‘);
                    list.insertBefore(srcObj, ev.currentTarget);
                }
            }
        </script>
        <div id=‘main-area‘>
            <ul id=‘list‘>
                <li id=‘1‘ draggable="true" ondragstart="dragstart(event)" ondragend="dragend(event)" ondragover="dragover(event)" ondrop="drop(event)">
                    111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
                </li><li id=‘2‘ draggable="true" ondragstart="dragstart(event)" ondragend="dragend(event)" ondragover="dragover(event)" ondrop="drop(event)">
                    222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
                </li><li id=‘3‘ draggable="true" ondragstart="dragstart(event)" ondragend="dragend(event)" ondragover="dragover(event)" ondrop="drop(event)">
                    333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
                </li><li id=‘4‘ draggable="true" ondragstart="dragstart(event)" ondragend="dragend(event)" ondragover="dragover(event)" ondrop="drop(event)">
                    444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
                </li>
            </ul>
        </div>
    </body>
    </html>

注:如果每个li之间换行,将会有空格产生。参考问题:http://stackoverflow.com/questions/25520904/html5-reorder-the-children-li-of-ul-by-drag-and-drop-the-borders-between-li-el

时间: 2024-10-13 22:49:32

HTML5:一个拖拽网页元素的例子的相关文章

JavaScript拖拽网页元素

<!DOCTYPE HTML> <html> <head> <title>javascript drag</title> <meta charset="utf-8"> </head> <body> <div id="drag" style="position: absolute;width: 300px;height: 180px;background:

HTML5开发 拖拽文件上传

Drag&Drop 拖拽功能的处理 关于HTML5拖拽文件上传,其实国外已经有很多网站有这样的应用,最早推出拖拽上传应用的是 Gmail,它支持标准浏览器下拖拽本地文件到浏览器中作为邮件的附件发送,但其实现在利用HTML5的功能实现,主要借助于新版支持的浏览器来实现,IE还是弱很多. 拖拽上传应用主要使用了以下 HTML5技术: Drag&Drop : HTML5基于拖拽的事件机制.File API : 可以很方便的让 Web 应用访问文件对象,File API 包括FileList.Bl

HTML5之拖拽(兼容IE和非IE)

前世:项目中需要拖动div,然后和某个div进行位置交换,这不是关键,关键是还要保存位置,然后在下次打开的时候按照保存的位置显示.还好本人功力深厚,一下子就想到了用localStorage来保存,事实证明真的很好用哦.保存数据的方法有了,然后开始"探索"如何用html(5)和js来实现拖拽的效果,由于H5给了比较规范的实现方式,所以在Chrome中轻松实现,万恶的IE(很少骂IE)竟然不兼容,NONONONO,心塞,只好用了两种方式分别实现拖拽效果.(其实两种方式内的代码很相似,唯一不

UEditor 解决拖拽视频元素改变视频尺寸时,无法保存视频尺寸问题的解决方法

UEditor虽然强大,但是bug还是蛮多的.比如插入视频元素后,拖拽视频去缩放尺寸,编辑器并没有将实际的尺寸保存下来.当你点击HTML按钮查看源代码时,width和height还是原来的值,再次点击此按钮回到正常状态,缩略图又回到原来的大小了. 翻源代码翻了蛮久,终于把这个问题解决了.问题就出在插入视频后创建视频HTML字符串和HTML字符串与可视化编辑层转化的地方. 当视频上传完成后,创建一个img用于可视化编辑,将默认width和height设置到img的width和height的属性中.

Nodejs express、html5实现拖拽上传

Nodejs express.html5实现拖拽上传 一.前言 文件上传是一个比较常见的功能,传统的选择方式的上传比较麻烦,需要先点击上传按钮,然后再找到文件的路径,然后上传.给用户体验带来很大问题.html5开始支持拖拽上传的需要的api.nodejs也是一个最近越来越流行的技术,这也是自己第一次接触nodejs,在nodejs开发中,最常用的开发框架之一是expess,它是一个类似mvc模式的框架.结合html5.nodejs express实现了拖拽上传的功能. 二.基础知识普及 1.No

拖拽改变元素位置或大小bug修复

<!doctype html><html><head>   <meta charset="utf-8">   <title>无标题文档</title><style>body{   background:#000;}.upshop-view{   width:320px;   height:499px;   background:#fff;   background-size:contain;   pos

html5新增拖拽和拖放功能介绍:

方法/步骤 1 DataTransfer对象:退拽传递的对象,一般使用Event.dataTransfer. 2 draggable属性,标签元素设置值为true.drangable=true. 3 ondragstart事件:元素被拖拽的时候触发的事件,作用在被拖拽元素上. ondragenter事件:进入目标元素触发事件,作用在目标元素上. ondragover事件:拖拽元素在目标元素上移动的时候触发的事件,作用在目标元素上. ondrop事件:被拖拽的元素在目标元素上同时鼠标放开触发的事件

javascript动画系列第四篇——拖拽改变元素大小

× 目录 [1]原理简介 [2]范围圈定 [3]大小改变[4]代码优化 前面的话 拖拽可以让元素移动,也可以改变元素大小.本文将详细介绍拖拽改变元素大小的效果实现 原理简介 拖拽让元素移动,是改变定位元素的left和top值实现的.而拖拽改变元素大小,则还需要改变元素的宽高 范围圈定 我们把改变元素大小的范围圈定在距离相应边10px的范围内 左侧边界L = obj.offsetLeft + 10 右侧边界R = obj.offsetLeft + obj.offsetWidth - 10 上侧边界

拖拽改变元素位置或大小

<!doctype html><html><head><meta charset="utf-8"><title>无标题文档</title><style>body{ background:#000;}.upshop-view{ width:320px; height:499px; background:#fff; background-size:contain; position:relative; z-