<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • JavaScript實(shí)現(xiàn)的div拖動效果實(shí)例代碼

    時間:2024-07-08 23:05:38 JavaScript 我要投稿
    • 相關(guān)推薦

    JavaScript實(shí)現(xiàn)的div拖動效果實(shí)例代碼

      在js中要如何實(shí)現(xiàn)div拖動的效果,下面YJBYS小編為你帶來實(shí)例的代碼實(shí)現(xiàn)段,希望對你有所幫助!

      js實(shí)現(xiàn)的div拖動效果實(shí)例代碼:

      div的拖動效果在很多效果中都有應(yīng)用,當(dāng)然還有很多附加的功能,本章節(jié)只是給拖動效果,并介紹一下它的實(shí)現(xiàn)過程。

      代碼實(shí)例如下:

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset=" utf-8">

    <meta name="author" content="" />

    <title>js實(shí)現(xiàn)的div拖動效果實(shí)例代碼</title>

    <style type="text/css">

    #oDiv{
    position:absolute;
    width:100px;
    height:60px;
    border:1px solid silver;
    left:100px;
    top:100px;
    z-index:9999;}#move{
    cursor:move;
    width:100%;
    height:15px;
    background-color:#0066cc;
    font-size:10px;}#close{
    float:right;
    width:10px;
    height:100%;
    cursor:hand;
    background-color:#cc3333;
    color:White;
    font-size:15px;}

    </style>

    <script type='text/javascript'>

    var offset_x;
    var offset_y;
    function Milan_StartMove(oEvent,div_id)
    {

    var whichButton;
    if(document.all&&oEvent.button==1)
    {
    whichButton
    =true;
    }

    else
    {
    if(oEvent.button==0)
    whichButton
    =true;
    }

    if(whichButton)
    {
    offset_x
    =parseInt(oEvent.clientX-oDiv.offsetLeft);
    offset_y
    =parseInt(oEvent.clientY-oDiv.offsetTop);
    document.documentElement.onmousemove
    =function(mEvent)
    {

    var eEvent=mEvent||event; var oDiv=div_id;
    var x=eEvent.clientX-offset_x;
    var y=eEvent.clientY-offset_y;
    oDiv.style.left
    =(x)+"px";
    oDiv.style.top
    =(y)+"px";
    }
    }
    }

    function Milan_StopMove(oEvent)
    {
    document.documentElement.onmousemove
    =null;
    }

    function div_Close(o) {o.style.display="none";}
    window.onload
    =function()
    {
    var omove=document.getElementById("move"); var oclose=document.getElementById("close");
    omove.onmousedown
    =function(){Milan_StartMove(event,this.parentNode)}
    omove.onmouseup
    =function(){Milan_StopMove(event)}
    oclose.onclick
    =function(){div_Close(this.parentNode.parentNode)}
    }
    </script>

    </head>

    <body>

    <div id="oDiv">
    <div id="move">
    <div id="close">X</div>
    </div>

    </div>

    </body>

    </html>

      以上代碼實(shí)現(xiàn)了div的拖動效果,下面簡單介紹一下此效果的實(shí)現(xiàn)過程:

      一.實(shí)現(xiàn)原理:

      實(shí)現(xiàn)的原理非常的簡單,就是將被拖動的div設(shè)置為絕對定位,然后根據(jù)鼠標(biāo)指針的坐標(biāo)不斷設(shè)定div的left和top屬性值即可,當(dāng)然在此過程中需要用到一些事件或者具體坐標(biāo)的計(jì)算,這里就不介紹了,可以參閱代碼注釋。

      二.代碼注釋:

      1.var offset_x,聲明一個變量用來存儲鼠標(biāo)指針距離div左邊緣的距離。

      2.var offset_y,聲明一個變量用來存儲鼠標(biāo)指針距離div上邊緣的距離。

      3.function Milan_StartMove(oEvent,div_id){},此函數(shù)為move元素的onclick事件處理函數(shù),第一個參數(shù)是事件對象,第二個是move元素的父元素。

      4.var whichButton,聲明一個變量,用來存儲一個布爾值。

      5.if(document.all&&oEvent.button==1){},如果在IE8和IE一下瀏覽器中,且event的button屬性值為1,if(document.all)可用來是否是IE8和IE8以下瀏覽器,如果button屬性值等于1,那么就是點(diǎn)擊的鼠標(biāo)左鍵。

      6.whichButton=true,將變量的值設(shè)置為true。

      7.if(oEvent.button==0),在其他瀏覽器中,如果button屬性值為0。

      8.if(whichButton){},如果whichButton為true,也就是鼠標(biāo)左鍵被按下。

      9.offset_x=parseInt(oEvent.clientX-oDiv.offsetLeft),獲取鼠標(biāo)指針坐標(biāo)距離oDiv元素左邊緣的距離。

      10.offset_y=parseInt(oEvent.clientY-oDiv.offsetTop),獲取鼠標(biāo)指針坐標(biāo)距離oDiv元素上邊緣的距離。

      11.document.documentElement.onmousemove=function(mEvent){},為document對象注冊onmousemove事件處理函數(shù),之所以注冊到document對象上,是利用了事件冒泡原理,否則有可能鼠標(biāo)指針滑出div,導(dǎo)致拖動失效的現(xiàn)象。

      12. var eEvent=mEvent||event,事件對象的兼容性寫法。

      13.var oDiv=div_id,將對象的引用賦值給oDiv變量。

      14.var x=eEvent.clientX-offset_x,獲取被拖動div的左邊緣距離窗口的距離。

      15.var y=eEvent.clientY-offset_y,獲取被拖動div的上邊緣距離窗口的距離。

      16.oDiv.style.left=(x)+"px",設(shè)置left屬性值。

      17.oDiv.style.top=(y)+"px",設(shè)置top屬性值。

      18.function Milan_StopMove(oEvent){document.documentElement.onmousemove=null;} ,松開鼠標(biāo)左鍵時的事件處理函數(shù)。

      19.function div_Close(o){o.style.display="none";} ,點(diǎn)擊叉號時的事件處理函數(shù)。


    更多相關(guān)文章推薦:

    1.最常用的20個javascript方法函數(shù)

    2.學(xué)習(xí)JavaScript的7個理由

    3.抽象語法樹在JavaScript中的應(yīng)用

    4.JavaScript實(shí)現(xiàn)網(wǎng)頁刷新代碼段

    5.perl- javascript中class的機(jī)制

    6.JavaScript中的with關(guān)鍵字

    7.高效編寫JavaScript代碼的技巧

    8.JavaScript實(shí)現(xiàn)的div拖動效果實(shí)例代碼

    【JavaScript實(shí)現(xiàn)的div拖動效果實(shí)例代碼】相關(guān)文章:

    javaScript實(shí)現(xiàn)可縮放顯示區(qū)效果代碼07-07

    Javascript簡單實(shí)現(xiàn)面向?qū)ο缶幊汤^承實(shí)例代碼10-02

    jQuery實(shí)現(xiàn)的拖動調(diào)整表格單元格的大小代碼實(shí)例08-14

    JavaScript實(shí)現(xiàn)網(wǎng)頁刷新代碼段08-07

    javascript實(shí)現(xiàn)貪吃蛇代碼08-20

    30行代碼實(shí)現(xiàn)Javascript中的MVC06-08

    php和javascript之間變量的傳遞實(shí)現(xiàn)代碼09-02

    常用排序算法之JavaScript實(shí)現(xiàn)代碼段06-04

    JavaScript實(shí)例講解09-25

    關(guān)jQuery彈出窗口簡單實(shí)現(xiàn)代碼-javascript編程06-07

    主站蜘蛛池模板: 91精品国产麻豆国产自产在线| 精品一区二区三区在线观看| 精品成人一区二区三区四区| 国产精品视频白浆免费视频| 欧美精品国产一区二区三区| 秋霞午夜鲁丝片午夜精品久| 久久香综合精品久久伊人| 久久久久久国产精品无码下载| 四虎成人精品免费影院| 精品麻豆丝袜高跟鞋AV| 亚洲精品乱码久久久久久蜜桃不卡| 国产免费久久精品99久久| 四虎精品8848ys一区二区| 国产亚洲婷婷香蕉久久精品| 国产精品毛片一区二区三区| 亚洲国产成人精品无码区在线观看 | 亚洲国产精品久久久久| 国产精品亲子乱子伦xxxx裸| 久久精品中文騷妇女内射| 日韩精品无码中文字幕一区二区| 日韩精品欧美激情国产一区| 久久国产香蕉一区精品| 精品亚洲欧美无人区乱码| 久久国产午夜精品一区二区三区 | 亚洲国产精品无码专区影院 | 欧美精品黑人巨大在线播放| 91精品国产综合久久久久久| 2020国产精品| 91精品国产自产在线观看永久| 国产cosplay精品视频| 国产成人精品日本亚洲直接| 国产夫妇精品自在线| 精品久久一区二区三区| 免费精品一区二区三区第35| 日韩精品在线看| 国产精品青草视频免费播放| 国产亚洲精品激情都市| 精品人妻一区二区三区毛片| 欧美日韩国产精品 | 久久精品国产一区二区电影| 牛牛在线精品观看免费正|