html5+javascript div拖拽

<!doctype html>
<html>
<head>
  <meta charset="UTF-8">
  <title>HTML5-Drag-Demo by 顽Shi</title>
  <style>
    .column {
      height: 200px;
      width: 200px;
      float: left;
      border: 1px solid black;
      background-color: green;
      margin-right: 5px;
      text-align: center;
      cursor: move;
    }
    .column header {
      color: black;
      text-shadow: #000 0 1px;
      box-shadow: 5px;
      padding: 5px;
      background: red;
      border-bottom: 1px solid black;
    }
    .column.over {
      border: 3px dashed #000;
    }
  </style>
</head>
<body>
  <div id="columns">
    <div class="column" draggable="true"><header>div1</header></div>
    <div class="column" draggable="true" ><header>div2</header></div>
    <div class="column" draggable="true"><header>div3</header></div>
	  <div class="column" draggable="true"><header>div4</header></div>
    <div class="column" draggable="true"><header>div5</header></div>
    <div class="column" draggable="true"><header>div6</header></div>
  </div>
</body>
<script>
  var columns = document.querySelectorAll(‘#columns .column‘);
  var colum = document.getElementById(‘columns‘);
  var dragEl = null;
  window.onload= function(){
		for(var i in columns){
			columns[i].index = i;
		}
  };
  [].forEach.call(columns,function(column){
    column.addEventListener("dragstart",domdrugstart,false);
    column.addEventListener(‘dragenter‘, domdrugenter, false);
    column.addEventListener(‘dragover‘, domdrugover, false);
    column.addEventListener(‘dragleave‘, domdrugleave, false);
    column.addEventListener(‘drop‘, domdrop, false);
    column.addEventListener(‘dragend‘, domdrapend, false);
  });

  function domdrugstart(e) {
    e.target.style.opacity = ‘0.5‘;

    dragEl = this;

    e.dataTransfer.effectAllowed = "move";
    e.dataTransfer.setData("text/html",this.innerHTML);
  }
  function domdrugenter(e) {
    e.target.classList.add(‘over‘);
  }
  function domdrugover(e) {
    if (e.preventDefault) {
      e.preventDefault();
    }

    e.dataTransfer.dropEffect = ‘move‘;

    return false;
  }
  function domdrugleave(e) {
    e.target.classList.remove(‘over‘);
  }
  function domdrop(e) {
    if (e.stopPropagation) {
      e.stopPropagation();
    }

    if (dragEl != this) {
	  //dragEl.innerHTML = this.innerHTML;//目标位置存放当前dom
      //this.innerHTML = e.dataTransfer.getData(‘text/html‘);//当前dom存放目标位置的dom

  	  var list=document.getElementById("columns");
      var newIndex = parseInt(this.index);
      var locIndex = parseInt(dragEl.index);
      var node=document.getElementById("columns").children[locIndex];
  		list.insertBefore(node,list.children[newIndex]);

      var newColumns = document.querySelectorAll(‘#columns .column‘);
      for(var i = 0; i < newColumns.length; i++){
        newColumns[i].index = i;
      }

    }    

    return false;
  }
  function domdrapend(e) {
    [].forEach.call(columns, function (column) {
      column.classList.remove(‘over‘);
       column.style.opacity = ‘1‘;
    });

  }
</script>
</html>

  

时间: 2024-10-11 21:16:18

html5+javascript div拖拽的相关文章

HTML5实现div拖拽

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

HTML5 File API — 拖拽显示

1.HTML5拖拽 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. 如果是html中的元素,要进行拖动,需要设置draggable为true. 下面的代码显示了img在两个div里任意拖动. 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <style type="text/css"> 5 #div1, #div2 6 {float:left; width:100px; height:35px;

Jquery实现div拖拽

Jquery实现div拖拽 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title> New Document </title> <script type="text/javascript"

Html Div 拖拽

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><style type="text/css"&g

HTML5多图片拖拽上传带进度条

前言 昨天利用css2的clip属性实现了网页进度条觉得还不错,但是很多情况下,我们在那些时候用进度条呢,一般网页加载的时候如果有需要可以用,那么问题就来了,怎么才算整个加载完毕呢,是页面主要模块加载完毕,还是window.onload之后算呢,对这些方面,我真不敢随意回答,因业务需求而定,本文想要说的是在图片上传的时候用到的进度条. 效果展示 详细参考请移步至html5demo HTML5 新增的拖拽相关事件说明 1.ondragover 效果图演示是所看见的可以将文件不仅仅是图片拖拽到该di

JavaScript实现拖拽元素对齐到网格(每次移动固定距离)

这几天在做一个拖拽元素的附加功能,就是对齐到网格,实际上就是确定好元素的初始位置,然后拖拽元素时,每次移动固定的距离.让元素都可以在网格内对齐.先上效果图,然后在详细说明一下细节问题 做了一个gif图,可以看到,每次元素的移动都是按照最小单位距离移动的.且每次元素都是对齐到网格的. 先根据demo说明一下思路和细节,后面会给出demo代码. 1. 确定元素的每次移动的最小单位(demo中为10px和10px),也就是每次水平或垂直的位移量都是10px.铺上一层网格背景是为了帮助我们更好的看到效果

Javascript面向对象拖拽

function Drag(id) { var _this=this; this.disX=0; this.disY=0; this.oDiv=document.getElementById(id); this.oDiv.onmousedown=function(e) { _this.fnDown(e); } } Drag.prototype.fnDown=function(e) { var _this=this; var e=e||event; this.disX=e.pageX-this.o

HTML5——将图片拖拽上传

如下图所示: 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> #div1{width:200px;height:200px;background:red;} </style> <script type="te

HTML5 drag &amp; drop 拖拽与拖放简介

近来简单看了看有关HTML5拖拽有关内容,现在将整理的知识写下来: 一.相关重点 DataTransfer 对象:退拽对象用来传递的媒介,使用一般为Event.dataTransfer. draggable 属性:就是标签元素要设置draggable=true,否则不会有效果,例如: <div title="拖拽我" draggable="true">列表1</div> ondragstart 事件:当拖拽元素开始被拖拽的时候触发的事件,此事