如何實(shí)現(xiàn)拖拽效果

1、新建盒子
<div class="box"></div>
2、給盒子添加樣式
.box{
    width: 0px;
    height: 0px;
    background: rgb(205, 235, 255);
    border: 1px double rgb(116, 116, 116);
    position: absolute;
    top: 0px;
    left: 0px;
}
3、在js中實(shí)現(xiàn)
var box = document.getElementsByClassName('box')[0];  //創(chuàng)建一個(gè)寬高為0的盒子
var doX = 0;  //創(chuàng)建一個(gè)為0的變量
var doY = 0;  //創(chuàng)建一個(gè)為0的變量
var on_off = false;  // 創(chuàng)建一個(gè)變量,當(dāng)前賦予的值為false;

window.onmousedown = function (e) {  //寫(xiě)一個(gè)點(diǎn)擊事件,當(dāng)前為鼠標(biāo)按下時(shí);
    on_off = true;  //當(dāng)鼠標(biāo)點(diǎn)下時(shí),on_off賦值為true,就把上面的賦值給替換掉了;
    e = e || window.event;
    doX = e.clientX;   //獲取鼠標(biāo)在頁(yè)面中點(diǎn)下時(shí)的x坐標(biāo)
    doY = e.clientY;   //獲取鼠標(biāo)在頁(yè)面中點(diǎn)下時(shí)的y坐標(biāo)
}

window.onmousemove = function (e) {  //創(chuàng)建一個(gè)鼠標(biāo)滑過(guò)事件;
    if(on_off){  //當(dāng)前on_off的賦值為上面的true,所以就要執(zhí)行if判斷的true
    e = e || window.event;
    moX = e.clientX;  //獲取鼠標(biāo)在頁(yè)面中滑過(guò)時(shí)的x坐標(biāo)
    moY = e.clientY;  //獲取鼠標(biāo)在頁(yè)面中滑過(guò)時(shí)的y坐標(biāo)
    var box_w = Math.abs(moX - doX);  //目前盒子的寬就為滑過(guò)后的位置減去點(diǎn)擊時(shí)的x的距離,如果點(diǎn)擊后從右向左滑,這時(shí)候就是負(fù)距離,所以需要加一個(gè)絕對(duì)值Math.abs;
    var box_h = Math.abs(moY - doY);  //目前盒子的高就為滑過(guò)后的位置減去點(diǎn)擊時(shí)的x的距離;
    var box_top = Math.min(moY,doY);  //這是盒子定位后的top值,盒子是根據(jù)左上角去進(jìn)行定位的,這時(shí)候我點(diǎn)擊向右滑,盒子就根據(jù)點(diǎn)擊的這個(gè)坐標(biāo)去進(jìn)行定位,如果點(diǎn)擊向左滑,這時(shí)候盒子的定位坐標(biāo)就需要根據(jù)滑過(guò)后的點(diǎn)去進(jìn)行定位;
    var box_left = Math.min(moX,doX);
    box.style = 'width:'+ box_w +'px; height:'+ box_h +'px; top:'+ box_top +'px; left: '+ box_left +'px;'
    }  //最后給盒子輸出滑過(guò)之后的寬、高、top、left、
}

window.onmouseup = function (e) {  //創(chuàng)建一個(gè)鼠標(biāo)抬起事件;
    on_off = false;  //這時(shí)候就需要把滑過(guò)事件關(guān)閉了;
    e = e || window.event;
    box.style = 'display:none';  //最后抬起為收尾,要給盒子添加隱藏樣式;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,153評(píng)論 1 92
  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,851評(píng)論 0 3
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,657評(píng)論 1 32
  • 前端開(kāi)發(fā)面試題 面試題目: 根據(jù)你的等級(jí)和職位的變化,入門(mén)級(jí)到專家級(jí),廣度和深度都會(huì)有所增加。 題目類型: 理論知...
    怡寶丶閱讀 2,683評(píng)論 0 7
  • 。 臨近開(kāi)學(xué)了,看開(kāi)學(xué)第一課是每次都要干的事情,這次的開(kāi)學(xué)第一課又是什么呢。 第一個(gè)也演講的人是非常顯眼的...
    小雨淅淅FJY閱讀 365評(píng)論 0 0

友情鏈接更多精彩內(nèi)容