真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

原生JS拖拽效果-創(chuàng)新互聯(lián)

很多時(shí)候我們做網(wǎng)站都會(huì)遇到 JS拖拽的需求,今天就按照一個(gè)彈出框拖拽作為一個(gè)小案例寫(xiě)個(gè)JS原生的代碼。

察隅ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書(shū)合作)期待與您的合作!

原生JS拖拽效果

按照上面的需求咱們開(kāi)始制作一個(gè)拖拽效果吧。

第一步、咱們得寫(xiě)一個(gè)布局和響應(yīng)的css


    標(biāo)題
    

青格勒前端博客!

    

www.cenggel.com

這里的話咱們id=btn的為拖拽的區(qū)域。

二、邏輯講述

整個(gè)JS代碼不是很多,當(dāng)鼠標(biāo)按下的時(shí)候獲取鼠標(biāo)的位置和id=box的上距和左邊距,然后計(jì)算目前的位置。

然后這時(shí)候鼠標(biāo)移動(dòng)的時(shí)候再次計(jì)算鼠標(biāo)的位置,然后給id=box位置

當(dāng)鼠標(biāo)按鈕松開(kāi)的時(shí)候把onmousemove和onmouseup清除掉

三、JS代碼部分


    function drag(obtnf,obtn){        //按鈕及初始值
        var obtn = document.getElementById(obtn),
            obtnf = document.getElementById(obtnf),
            disX = 0,
            disY = 0;        //鼠標(biāo)按下時(shí)開(kāi)始計(jì)算
        obtn.onmousedown = function(ev){            var ev = ev || window.event;
            disX = ev.clientX - obtnf.offsetLeft;
            disY = ev.clientY - obtnf.offsetTop;            //鼠標(biāo)按下并移動(dòng)時(shí)計(jì)算
            document.onmousemove = function(ev){                var ev = ev || window.event;
                obtnf.style.left = ev.clientX - disX + 'px';
                obtnf.style.top = ev.clientY - disY + 'px';
            };            //鼠標(biāo)松開(kāi)時(shí)清除時(shí)間
            document.onmouseup = function(){                document.onmousemove = null;                document.onmouseup = null;
            };            return false;
        };
    };    //引用
    drag("box","btn") www.gendan5.com

最后咱們的效果如下

原生JS拖拽效果

做到這里其實(shí)咱們的效果并不完美,應(yīng)為當(dāng)我們拖拽的時(shí)候發(fā)現(xiàn),他能直接被拖到瀏覽器的外面去了,所以咱們?cè)俳o他加點(diǎn)限制。

最終JS代碼如下:


    function xianzhi(val,max,min){        if (val > max){            return max;
        }else if(val < min){            return  min;
        }else{            return val;
        }        console.log(val)
    }    function drag(obtnf,obtn){        //按鈕及初始值
        var obtn = document.getElementById(obtn),
            obtnf = document.getElementById(obtnf),
            disX = 0,
            disY = 0;        //鼠標(biāo)按下時(shí)開(kāi)始計(jì)算
        obtn.onmousedown = function(ev){            var ev = ev || window.event;
            disX = ev.clientX - obtnf.offsetLeft;
            disY = ev.clientY - obtnf.offsetTop;            //鼠標(biāo)按下并移動(dòng)時(shí)計(jì)算
            document.onmousemove = function(ev){                var ev = ev || window.event;                var lefts= (ev.clientX - disX),
                    tops= (ev.clientY - disY),
                    maxle= (document.documentElement.clientWidth - obtnf.offsetWidth),
                    maxto= (document.documentElement.clientHeight - obtnf.offsetHeight)
                lefts = xianzhi(lefts,maxle,0)
                tops = xianzhi(tops,maxto,0)
                obtnf.style.left = lefts + 'px';
                obtnf.style.top = tops + 'px';
            };            //鼠標(biāo)松開(kāi)時(shí)清除時(shí)間
            document.onmouseup = function(){                document.onmousemove = null;                document.onmouseup = null;
            };            return false;
        };
    };    //引用
    drag("box","btn")

做到這里一個(gè)小型的拖拽效果就出來(lái)了。


新聞標(biāo)題:原生JS拖拽效果-創(chuàng)新互聯(lián)
當(dāng)前地址:http://weahome.cn/article/ccjshi.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部