JS拖拽小框?qū)崿F(xiàn)

JS實現(xiàn)拖拽的虛線框
<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            #div1 {
                width: 100px;
                height: 100px;
                background: red;
                position: absolute;
            }
            
            .box {
                border: 1px dashed black;
                position: absolute;
            }
        </style>
        <script>
            window.onload = function() {
                var oDiv = document.getElementById('div1');
                var disX = 0;
                var disY = 0;

                oDiv.onmousedown = function(ev) {
                    var oEvent = ev || event;
                    disX = oEvent.clientX - oDiv.offsetLeft;
                    disY = oEvent.clientY - oDiv.offsetTop;

                    //虛線框
                    var oBox = document.createElement('div');
                    oBox.className = 'box';
                    //設(shè)置box的寬高
                    oBox.style.width = oDiv.offsetWidth - 2 + 'px';
                    oBox.style.height = oDiv.offsetHeight - 2 + 'px';
                    //設(shè)置出現(xiàn)的位置
                    oBox.style.left = oDiv.offsetLeft + 'px';
                    oBox.style.top = oDiv.offsetTop + 'px';
                    document.body.appendChild(oBox);

                    function mouseMove(ev) {
                        var oEvent = ev || event;
                        var l = oEvent.clientX - disX;
                        var t = oEvent.clientY - disY;
                        //這里移動的是box
                        oBox.style.left = l + 'px';
                        oBox.style.top = t + 'px';
                    };

                    function mouseUp() {
                        //將box的位置給div
                        oDiv.style.left = oBox.offsetLeft + 'px';
                        oDiv.style.top = oBox.offsetTop + 'px';
                        //移除box
                        document.body.removeChild(oBox);
                        this.onmousemove = null;
                        this.onmouseup = null;
                        if(this.releaseCapture) {
                            this.releaseCapture();
                        }
                    }
                    //兼容性判定
                    if(oDiv.setCapture) {
                        //IE
                        oDiv.onmousemove = mouseMove;
                        oDiv.onmouseup = mouseUp;
                        oDiv.setCapture();
                    } else {
                        //Chrome/FF
                        document.onmousemove = mouseMove;
                        document.onmouseup = mouseUp;
                    }
                    return false; //chrome,ff,ie9
                }
            }
        </script>
    </head>

    <body>
        <div id="div1"></div>
    </body>

</html>
JS添加事件兼容的一個簡單小函數(shù)
function myAddEvent(obj,ev,fn)
    {
        if(obj.attachEvent)
        {
            obj.attachEvent('on'+ev,fn);
        }else
        {
            obj.addEventListener(ev,fn,false);
        }
    }
    window.onload=function(){
        var oDiv = document.getElementById('btn1');
        myAddEvent(oDiv,'click',function(){
            alert('abc');
        })
        myAddEvent(oDiv,'click',function(){
            alert('ced');
        })
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,889評論 25 709
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,161評論 4 61
  • NO.25 知到深處便是行,行到深處又是知。一件事我們做與不做究其原因還是我們有沒有真正認(rèn)識到這件事。比如,上學(xué)期...
    思維工具箱閱讀 847評論 0 1
  • 時間是晚上十一點鐘,吃了點夜宵,我的肚子發(fā)出滿意的咕嚕聲。夜宵非常簡單:一杯熱牛奶再加上兩片面包,外加一杯速溶咖啡...
    樸夏_閱讀 1,475評論 18 15
  • Chapter 2 Scientific Papers For Communication! 科研團體或者說科學(xué)社...
    霍長庚閱讀 1,557評論 1 1

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