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>