您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)js如何實(shí)現(xiàn)div色塊拖動(dòng)錄制,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
實(shí)例為大家分享了js實(shí)現(xiàn)p色塊拖動(dòng)錄制的具體代碼,具體內(nèi)容如下
描述:
實(shí)現(xiàn)一個(gè)p50*50的色塊,拖動(dòng)它生成一個(gè)軌跡,松手后,這個(gè)p會(huì)重復(fù)你剛才拖動(dòng)的這個(gè)路徑。
效果:
代碼:
<!DOCTYPE html>
<html lang="en"><head> <meta charset="UTF-8">
<title>Title</title>
<style> p { width: 50px; height: 50px; background-color: deepskyblue; position: absolute; border: 2px solid #656565; } </style>
<script src="js/Method.js">
</script>
</head>
<body>
<p>
</p>
<script>
var elem;
var state=0;
//當(dāng)前的狀態(tài) 初始0——拖動(dòng)錄制1——回放2
var arr=[];//存放我們的行走路徑的 數(shù)組
var list=[];//存放我們的行走路徑的 數(shù)組
var index=0; init(); function init() { elem=document.querySelector("p");
Method.dragElem(elem);
elem.addEventListener("mousedown",mouseHandler);
elem.addEventListener("mouseup",mouseHandler);
setInterval(animation,16); } function mouseHandler(e) {
//當(dāng)前的狀態(tài) 初始0——拖動(dòng)錄制1——回放2
if(e.type==="mousedown"){
//鼠標(biāo)按下
state=1; }else if(e.type==="mouseup"){
//鼠標(biāo)抬起
createElemShadow();
state=2;
}
}
function createElemShadow() {
var bool=false;
if(list.length===0) bool=true;
for(var i=0;i<5;i++){
if(bool)list.push(elem.cloneNode(false));
list[i].style.opacity=1-i*0.2;
document.body.appendChild(list[i])
}
}
function animation() {
if(!state) return;
if(state===1){
record();
}else if(state===2){
play();
}
}
function record() {
var rect=elem.getBoundingClientRect();
arr.push({x:rect.x,y:rect.y}); }
function play() {
/* if(index>=arr.length-1){
state=0; return; }*/
index++;
var point=arr[index];
if(point){
elem.style.left=point.x+"px";
elem.style.top=point.y+"px";
elem.style.backgroundColor=Method.pColor(); }
var bool=false;
for(var i=0;i<list.length;i++){
if(!arr[index-i*2]) continue;
list[i].style.left=arr[index-i*2].x+"px";
list[i].style.top=arr[index-i*2].y+"px";
list[i].style.backgroundColor=Method.pColor();
bool=true; }
if(!bool){
state=0;
for(var j=0;j<list.length;j++){
list[j].remove();
}
}
}
</script>
</body>
</html>
看完上述內(nèi)容,你們對(duì)js如何實(shí)現(xiàn)div色塊拖動(dòng)錄制有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。