我在一个页面上工作,它的所有内容都是使用panzoom缩放的。问题是,当我在页面中拖动某些内容时,拖动项的位置会变得不好。
发布于 2016-09-16 08:59:33
我不确定,但也许我找到了答案。
这里有两点:
background scale (根据背景缩放光标移动时不移动背景)
下面是我的代码,用于缩放背景和在其上移动对象。基于this answer的缩放光标
html
<script src = "/js/vendors/jquery-ui.min.js"></script>
<script src = "/js/vendors/jquery.panzoom.min.js"></script>
<div id = "map-viewport">
<div id = "map">
<div class = "draggable">1</div>
<div class = "draggable">2</div>
</div>
</div>js
var map = $('#map');
var viewport = $('#map-viewport');
map.panzoom({
increment: 0.1,
minScale: 1,
contain: 'invert'
});
viewport.on('wheel', function( e ) {
e.preventDefault();
var delta = e.delta || e.originalEvent.wheelDelta;
var zoomOut = delta ? delta < 0 : e.originalEvent.deltaY > 0;
map.panzoom('zoom', zoomOut, {
increment: 0.2,
animate: false,
focal: e.originalEvent
});
});
var click = { x: 0, y: 0};
$('.draggable')
.draggable({
containment: 'parent',
start: function(e) {
click.x = e.clientX;
click.y = e.clientY;
},
drag: function(e, ui) {
var m = map.panzoom('getMatrix');
var zoom = Math.sqrt(m[0] * m[3]); // zoom don't change proportion and scale
var original = ui.originalPosition;
ui.position = {
left: (e.clientX - click.x + original.left) / zoom,
top: (e.clientY - click.y + original.top ) / zoom
};
}
})
.on('mousedown', function(e){
e.stopImmediatePropagation();
return false;
});发布于 2020-08-11 19:01:27
给你。我使用的是浏览器js。jquery UI和Panzoom的可拖拽
var viewport = $('.frame');
var $pz = $('.panzoom');
$pz.panzoom({
minScale: .8,
maxScale: 3,
onPan: function() {
// console.log('pan');
},
onStart: function(event) {
// console.log('start', event);
return true;
},
});
$('.item').draggable({
helper: 'clone',
appendTo: '.workspace',
zIndex: 100505,
stop: function(event, ui) {
event.target.remove();
},
});https://stackoverflow.com/questions/33840054
复制相似问题