• 拖动效果


    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>
  • 相关阅读:
    老男孩九期全栈Python之基础一
    为善如挽逆水之舟,才放手便下流
    对自己的表现打分
    anki
    解决推送数据平台
    己所独知,尽是方便;人所不见,尽是自由
    常与权
    为什么会一直刷视频而停不下来
    准备换个房子
    UDEC 1
  • 原文地址:https://www.cnblogs.com/shanhaihong/p/5691097.html
Copyright © 2020-2023  润新知