【问题标题】:html5 drag and drop, getting dragged item positionhtml5拖拽,获取拖拽item位置
【发布时间】:2018-05-15 15:55:54
【问题描述】:
有什么方法可以根据与页面相关的 X 和 Y 来获取 dragover/dragenter/dragleave 事件中的拖动项目位置?我知道我可以通过调用event.clientX 或event.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>