placeholder
输入框提示信息
contenteditable
是否可以编辑元素内容
子元素可以继承
默认值:false
draggable
是否可以拖拽元素,a元素与img元素默认就有
Chrome与safari可以正常使用
拖拽的生命周期,拖拽的组成,
1.拖拽的开始,拖拽进行中,拖拽结束
事件
ondragstart 拖拽的开始
ondrag 拖拽进行中
ondragend 拖拽结束
var div = document.getElementsByTagName('div')[0];var beginX = 0;var beginY = 0;div.ondragstart = function(e){beginX = e.clientX;beginY = e.clientY;}div.ondragend = function(e){var x = e.clientX - beginX;var y = e.clientY - beginY;div.style.left = div.offsetLeft + x +'px';div.style.top = div.offsetTop + y + 'px';
2.被拖拽物,目标区域
事件
ondragenter
拖拽物体被拖进目标区域,这里的元素图形进去不会触发,需要拖拽的鼠标进入才会触发
ondragover
在目标区域移动就会触发
ondragleave
离开目标区域触发
ondrop
在目标区域放下触发,默认情况下不会触发,因为所有标签元素,当拖拽周期结束时,默认事件是回到原处,需要在ondragover事件下阻止默认事件
在drop和dragstart 使用e.dataTransfer.effectAllowed/dropEffect 可以修改鼠标样式,兼容性极差
拖拽实例,将ul1的子元素拖拽进ul2
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>ul {padding: 0;margin: 0;width: 100px;height: 100px;border: 1px solid #000;position: absolute;}li {list-style: none;width: 80px;height: 25px;background: chartreuse;margin: 5px auto;}.warp1 {left: 300px;}.warp2 {left: 600px;}</style></head><body><ul class="warp1"><li class="box" draggable="true"></li><li class="box" draggable="true"></li><li class="box" draggable="true"></li></ul><ul class="warp2"></ul><script>var dragDom = null;var li = document.getElementsByClassName('box');var warp1 = document.getElementsByClassName('warp1')[0];var warp2 = document.getElementsByClassName('warp2')[0];for (var i = 0; i < li.length; i++) {li[i].ondragstart = function (e) {dragDom = e.target;}}warp2.ondragover = function (e) {return false;}warp2.ondrop = function (e) {warp2.appendChild(dragDom);dragDom = null;}warp1.ondragover = function (e) {return false;}warp1.ondrop = function (e) {warp1.appendChild(dragDom);dragDom = null;}</script></body></html>
