文章出處

  有時項目中會遇到需要拖動元素、拖拽調整元素大小的需求。大部分時候都不想自己寫一遍,因為已經有很多現成的例子了。例如jqueryui提供的drag和resize。但是僅僅是為了這么小一個功能就引入一個庫,真是有點劃不來,性價比太低了撒。于是自己實現了一遍,寫了兩個通用函數,需要的時候直接把他們考到項目中就可以啦。代碼很清爽有木有!

  先說元素拖動,其實就是動態改變元素的left值和top值,當然前提是元素必須是絕對定位或者相對定位的。代碼如下:

function draggable(el){
        el.css('cursor', 'move');
        var eventX, eventY, startX, startY, drag;
        el.on('mousedown', function(event){
            eventX = event.clientX;
            eventY = event.clientY;
            startX = parseInt(el.css('left'));
            startY = parseInt(el.css('top'));
            drag = true;
            if(this.setCapture){this.setCapture();}
        }).on('mouseup', function(event){
            drag = false;
            if(this.releaseCapture){this.releaseCapture();}
        });
        $(document).on('mousemove', function(event){
            if(drag){
                var l = startX + (event.clientX - eventX);
                var t = startY + (event.clientY - eventY);
                el.css({left : l, top : t,});
            }
        }).on('mouseup', function(){
            drag = false;
        });
    }

  看一下效果:

  代碼放在了runjs.cn上,查看源碼請點這里http://runjs.cn/code/jfqpe2lo

  拖拽調整元素大小稍微復雜點,其實原理與拖動元素也差不多,無非是動態改變的屬性多了些,包括left、top、width、height。代碼有點長就不貼這里了。先看下效果:

  代碼放在了runjs.cn上,查看源碼請點這里http://runjs.cn/code/ihiqp2pa


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()