js拖入拖出效果

<!DOCTYPE html>
<html>
<head>
<title>js拖進和拖出效果</title>
<style type="text/css">
.parent{
position: relative;
}
#drop{
width: 300px;
height: 200px;
background-color: #ff0000;
padding: 5px;
border:2px solid #000000;
position: absolute;
left: 200px;
top: 0px;
overflow: hidden;
}
#item{
width: 100px;
height: 100px;
background-color: #ffff00;
padding: 5px;
position: absolute;
left: 0;
top:0;
border:1px dashed #000000;
}
#copyitem0,#copyitem1,#copyitem2,#copyitem3{
width: 100px;
height: 100px;
background-color: #ffff00;
padding: 5px;
left: 0;
top:0;
float: left;
border:1px dashed #000000;}
*[draggable=true]{
-webkit-user-select:none;/*禁止選擇文字*/
-khtml-user-drag:element;/*兼容safai 設置元素可拖拽*/
cursor: move;
}
*:-khtml-drag{
background-color: rgba(238,238,238,0.5);
}
</style>
<script type="text/javascript">
/*兼容性*/
function listenEvent(eventTarget,eventType,eventHandler){
if(eventTarget.addEventListener){
eventTarget.addEventListener(eventType,eventHandler,false);
}else if(eventTarget.attachEvent){
eventType="on"+eventType;
eventTarget.attachEvent(eventType,eventHandler);
}else{
eventTarget["on"+eventType]=eventHandler;
}
}javascript

//取消事件默認動做
function cancelEvent(event){
if(event.preventDefault){
event.preventDefault();
}else{
event.returnValue=false;
}
}css

//阻止捕獲和冒泡階段中當前事件的進一步傳播
function cancelPropagation(event){
if(event.stopPropagation){
event.stopPropagation();
}else{
event.cancelBubble=true;
}
}html

window.onload=function(){
var index=0;//標記拖拽元素個數
var target=document.getElementById("drop");//目標元素
listenEvent(target,"dragenter",cancelEvent);
listenEvent(target,"dragover",dragOver);
listenEvent(target,"drop",function(evt){
cancelPropagation(evt);
evt=evt||window.event;
evt.dataTransfer.dropEffect='copy';
/*dataTransfer對象用來傳遞拖拽的數據。
*dataTransfer對象有 getData()和setData()兩個主要方法,
*操做dataTransfer中攜帶的數據
*/
var id=evt.dataTransfer.getData("Text");
var item=document.getElementById(id);
/*將拖拽div複製一份放入目標div中*/
var copyitem=document.createElement("div");
var idstr="copyitem"+index;
copyitem.setAttribute("id",idstr);
copyitem.innerHTML=item.innerHTML+index;
copyitem.setAttribute("draggable","true");
listenEvent(copyitem,"dragstart",function(evt){
evt=evt||window.event;
evt.dataTransfer.effectAllowed='copy';
evt.dataTransfer.setData("Text",copyitem.id);

});
target.appendChild(copyitem);
index++;
/*拖出目標元素*/
var target2=document.getElementById("item");//目標元素
listenEvent(target2,"dragenter",cancelEvent);
listenEvent(target2,"dragover",dragOver);
listenEvent(target2,"drop",function(evt){
cancelPropagation(evt);
evt=evt||window.event;
evt.dataTransfer.dropEffect='copy';
var ids=evt.dataTransfer.getData("Text");

removeElementDiv(ids);

});java

});
var item=document.getElementById("item");
item.setAttribute("draggable","true");web

listenEvent(item,"dragstart",function(evt){
evt=evt||window.event;
evt.dataTransfer.effectAllowed='copy';
evt.dataTransfer.setData("Text",item.id);
});

}app

function dragOver(evt){
if(evt.preventDefault){
evt.preventDefault();
}
evt=evt||window.event;
evt.dataTransfer.dropEffect='copy';
return false;
}htm

/*元素拖出去執行刪除*/
function removeElementDiv(el){
var child = document.getElementById(el);
if(!child){return;}
child.parentNode.removeChild(child);
}
</script>
</head>
<body>
<div>
<p>把黃色小塊拖入紅色大方框中</p>
</div>
<div class="parent">
<!-- onselectstart="return false;"禁止選擇文字兼容IE -->
<div id="item" draggable="true" onselectstart="return false;">hello</div>
<div id="drop"></div>
</div>

</body>
</html>對象

相關文章
相關標籤/搜索