H5 拖拽
Posted auserroot
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了H5 拖拽相关的知识,希望对你有一定的参考价值。
H5原生拖拽属性使用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box
width: 200px;
height: 200px;
border: 1px solid #000;
.item
width: 20px;
height: 20px;
background-color: chartreuse;
margin: 20px;
</style>
</head>
<body>
<div class="box"></div>
<div class="item"></div>
</body>
</html>
<script>
let item = document.querySelector('.item')
let box = document.querySelector('.box')
//添加允许拖拽属性
item.draggable = true
//strat drag event
item.ondragstart = function(e)
// e = window.event||event
// console.log('.......',e)
// e.dataTransfer.setData('item',e.target.className)//存储class标识
//let $el = event||window.event
//$el.dataTransfer.setData('a',JSON.stringify(item))//将item存入datatransfer
// console.log('cccccccccccccccc',$el,item)
//let canva = document.createElement('canvas') //创建canvas替换api拖拽图片效果
//canva.id = 'canva'
//let ctx = canva.getContext('2d')
//canva.width = $el.target.clientWidth
//canva.height = $el.target.clientHeight
//canva.style.backgroundColor = '#fff'
// canva.style.border = '1px solid #000'
//canva.style.position = 'absolute'
//canva.style.top = 0
//canva.style.left = 0
//ctx.font = '20px 微软雅黑'
//ctx.fillStyle = '#000'
//ctx.fillText(item.coursesName,canva.width,canva.height)
//ctx.textAlign = 'center'
//ctx.textBaseline = 'middle'
//$el.target.appendChild(canva)
//$el.dataTransfer.setDragImage(canva,canva.width/2,canva.height/2)
//setTimeout(()=>
//document.querySelector('#canva')&&$el.target.removeChild(document.querySelector('#canva'))
//,0)
//阻止拖拽默认事件
box.ondragover = function(e)
e = window.event||event
e.preventDefault();
box.ondrop = function(e)
// e = window.event||event
// console.log(e.dataTransfer.getData('item'))
// let ite = document.querySelector('.'+e.dataTransfer.getData('item'))//获取ondragstart中存储的数据
// e.target.appendChild(ite)
e.target.appendChild(item)
</script>
未注释代码为精简版方案
使用H5 drag api 在ie浏览器中存在兼容性问题 ie 中不支持 dataTransfer中的setData、getData 和 setDragImage 数据存储可使用store 或 sessionStorage、localStorage替换
以上是关于H5 拖拽的主要内容,如果未能解决你的问题,请参考以下文章