에서 테스트
당신은 줌 값에 따라 마우스 위치를 확장 할 수 있습니다.
확대/축소 값을 0.5
으로 설정했다고 가정하면 마우스 위치 (x 및 y)를 같은 값으로 조정해야합니다. 따라서이 정확한 문제를 해결하려면 축척 값으로 나누는 것만 큼 간단하게 처리 할 수 있습니다 (var mPos = {x: (e.clientX/0.5) - elPos.x, y: (e.clientY/0.5) - elPos.y };
).
스크립트에서 스케일/줌 값을 처리하도록하여 스크립트의 변수로 설정할 수 있도록하는 것이 좋습니다. 나는. 이 같은 :
(function() {
var scaleValue = 0.5;
addZoom(scaleValue);
var $container = $('#container');
var $slider = $('#slider');
var sliderW2 = $slider.width()/2;
var sliderH2 = $slider.height()/2;
var radius = 200;
var deg = 0;
var elP = $('#container').offset();
var elPos = { x: elP.left, y: elP.top};
var X = 0, Y = 0;
var mdown = false;
$('#container')
.mousedown(function (e) { mdown = true; })
.mouseup(function (e) { mdown = false; })
.mousemove(function (e) {
if (mdown) {
var mPos = {x: (e.clientX/scaleValue) - elPos.x, y: (e.clientY/scaleValue) - elPos.y };
var atan = Math.atan2(mPos.x-radius, mPos.y-radius);
deg = -atan/(Math.PI/180) + 180; // final (0-360 positive) degrees from mouse position
X = Math.round(radius* Math.sin(deg*Math.PI/180));
Y = Math.round(radius* -Math.cos(deg*Math.PI/180));
$slider.css({ left: X+radius-sliderW2, top: Y+radius-sliderH2 });
// AND FINALLY apply exact degrees to ball rotation
$slider.css({ WebkitTransform: 'rotate(' + deg + 'deg)'});
$slider.css({ '-moz-transform': 'rotate(' + deg + 'deg)'});
//
// PRINT DEGREES
$('#value').html('angle deg= '+deg);
}
});
})();
function addZoom(scaleValue) {
$('#zoom-container').css('zoom', scaleValue);
}
바이올린 : https://jsfiddle.net/mqgfxkjf/10/
당신은 그냥 나에게 긴 테스트 및 연구의 3 일 저장. 고맙습니다. – user7453632
도와 드리겠습니다! 최근에 유사한 작업을하고 있었으므로 문제가 상당히 빨라졌습니다! : P – chrisv
완벽하게 만들려면 0.5 대신 scaleValue를 추가하십시오. var mPos = {x : (e.clientX/scaleValue) - elPos.x, y : (e.clientY/scaleValue) - elPos.y}; – user7453632