【问题标题】:html5 drag and drop, getting dragged item positionhtml5拖拽,获取拖拽item位置
【发布时间】:2018-05-15 15:55:54
【问题描述】:

有什么方法可以根据与页面相关的 X 和 Y 来获取 dragover/dragenter/dragleave 事件中的拖动项目位置?我知道我可以通过调用event.clientXevent.clientY 来获取鼠标位置,但我想知道拖动创建的浮动元素的位置(可以通过event.dataTransfer.setDragImage() 函数设置的位置)

例如此代码将在拖动时打印鼠标位置,而不是浮动元素的实际偏移量:

function dragOver(event) {
   console.log(event.clientX
});

【问题讨论】:

    标签: javascript html drag-and-drop


    【解决方案1】:

    借助 jQuery 库你可以实现它,你可以使用控制台打印值,只是为了告诉你我在屏幕上打印位置。

    $('#dragMe').draggable(
        {
            containment: $('body'),
            drag: function(){
                var position = $(this).position();
                var xPos = position.left;
                var yPos = position.top;
                $('#positionX').text('positionX: ' + xPos);
                $('#positionY').text('positionY: ' + yPos);
            },
             accept: '#dragMe',
            over : function(){
                $(this).animate({'border-width' : '5px',
                                 'border-color' : '#0f0'
                                }, 500);
                $('#dragThis').draggable('option','containment',$(this));
            }
        
        });
    #dragMe {
        width: 10em;
        height: 6em;
        padding: 0.5em;
        border: 4px solid #ccc;
        border-radius: 0 2em 2em 2em;
        background-color: #fff;
        background-color: rgba(255,255,255,0.5);
    }
    
    #dropMe {
        width: 12em;
        height: 12em;
        padding: 0.5em;
        margin: 0 auto;
    }
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    <div id="dragMe">
    <p>DRAG ME</p>
        <ul>
            <li id="positionX"></li>
            <li id="positionY"></li>
            
        </ul>
    </div>
    
    <div id="dropMe"></div>

    【讨论】: