码迷,mamicode.com
首页 > 其他好文 > 详细

拖动效果

时间:2016-07-21 12:22:25      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

css部分:

<style type="text/css">
    .page{text-align:left;}
    .dragDiv{
  
border:1px solid #ddd;
  padding:10px;
  width:300px;
  height:150px;
   margin:0 auto;
  border-radius:4px;
   box-shadow
:0 1px 2px #fefefe;
   position
: fixed;
} </style>

html部分:

<div class="dragDiv" id="drag">
    <div class="drag-head"></div>
    <div class="drag-body">
        drag me
    </div>
</div>

js部分:(此处需要引入jquery.js)

<script>
    var _drag = {};
    _drag.top = 0; //拖动过的位置距离上边
    _drag.left = 0; //拖动过的位置距离左边
    _drag.maxLeft; //距离左边最大的距离
    _drag.maxTop; //距离上边最大的距离
    _drag.dragging = false; //是否拖动标志
    //拖动函数
    function bindDrag(el){
        var winWidth = $(window).width(), winHeight =$(window).height(),objWidth = $(el).outerWidth(), objHeight = $(el).outerHeight();
        _drag.maxLeft = winWidth - objWidth, _drag.maxTop = winHeight - objHeight;
        var els = el.style,x=0,y=0;
        var objTop = $(el).offset().top, objLeft = $(el).offset().left;
        $(el).mousedown(function(e){
            _drag.dragging = true;
            _drag.isDragged = true;
            x = e.clientX - el.offsetLeft;
            y = e.clientY - el.offsetTop;
            el.setCapture && el.setCapture();
            $(document).bind(mousemove,mouseMove).bind(mouseup,mouseUp);
            return false;
        });
        function mouseMove(e){
            e = e || window.event;
            if(_drag.dragging){
                _drag.top = e.clientY - y;
                _drag.left = e.clientX - x;
                _drag.top = _drag.top > _drag.maxTop ? _drag.maxTop : _drag.top;
                _drag.left = _drag.left > _drag.maxLeft ? _drag.maxLeft : _drag.left;
                _drag.top = _drag.top < 0 ? 0 : _drag.top;
                _drag.left = _drag.left <0 ? 0 : _drag.left;
                els.top = _drag.top + px;
                els.left = _drag.left+ px;
                return false;
            }

        }
        function mouseUp(e){
            _drag.dragging = false;
            el.releaseCapture && el.releaseCapture();
            e.cancelBubble = true;
            $(document).unbind(mousemove,mouseMove).unbind(mouseup,mouseUp);
        }
        $(window).resize(function(){
            var winWidth = $(window).width(),
                    winHeight = $(window).height(),
                    el = $(el),
                    elWidth = el.outerWidth(),
                    elHeight = el.outerHeight(),
                    elLeft = parseFloat(el.css(left)),
                    elTop = parseFloat(el.css(top));
            _drag.maxLeft = winWidth - elWidth;
            _drag.maxTop = winHeight - elHeight;
            _drag.top = _drag.maxTop < elTop ? _drag.maxTop : elTop;
            _drag.left = _drag.maxLeft < elLeft ? _drag.maxLeft : elLeft;
            el.css({
                top:_drag.top,
                left:_drag.left
            })
        })
    }
    bindDrag(document.getElementById(drag));
</script>

 

拖动效果

标签:

原文地址:http://www.cnblogs.com/shanhaihong/p/5691097.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!