【发布时间】:2014-09-07 01:04:20
【问题描述】:
我正在尝试为移动设备实现拖放功能...有一个具有固定宽度/高度的容器 div 和其中另一个包含内容的 div,但它的大小比父级大得多。
我的问题是,一旦我点击了可拖动的 div,我就可以移动它,但我真的没有找到任何解决方案来保持每次我在屏幕上开始 touchmove 时可拖动元素的位置相同..
我尽量减少这种情况 我也不想使用 jQueryUI
附:拖动元素只能通过使用触摸模拟在桌面上工作
这是一个例子 JSFiddle
这是我的代码
<div class="container">
<div class="draggable">
</div>
</div>
<script>
$(document).on('touchmove','.draggable',function(e){
//Prevent default for mobile devices so the element inside the container can be dragged witouth stopping
//e.preventDefault();
//Calculating the distance where the touch event stopped
var xPos = e.originalEvent.touches[0].pageX;
var yPos = e.originalEvent.touches[0].pageY;
//Moving the draggable element around
$(this).css({
left: xPos + $(this).offset().left + 'px',
top: yPos + $(this).offset().top + 'px'
});
});
</script>
<style>
.container
{
width:200px;
height:200px;
overflow:hidden;
position:relative;
}
.draggable
{
width:1000px;
height:1000px;
background:url('http://th04.deviantart.net/fs71/PRE/f/2014/249/d/f/seraphim_by_alexiuss-d7y4v0o.jpg');
position:relative;
}
</style>
【问题讨论】:
-
你的小提琴是空的。
-
您需要容器 div 来“屏蔽”可拖动元素吗?我猜对了吗?我知道没有得到的是:可拖动元素应该做什么?你可以拖动它。然后?它应该放在哪里(因为它的拖放)JSfiddle 不模拟移动事件,所以我无法真正测试它。
-
这就是我遇到的问题......我不想从左上角拖动容器内的元素,我想从我触摸元素的位置拖动它。所以基本上里面的元素它应该和这个小提琴 jsfiddle.net/WBv9r/1/light 一样工作
标签: javascript html mobile draggable viewport