У меня есть z преобразованный элемент, который имеет маркер в качестве дочернего элемента, и мне нужно поместить этот маркер в положение щелчка мыши.Как преобразовать координаты экрана в координаты на z преобразованном элементе?
мне нужно знать, как преобразовать координаты экрана в координаты на г трансформируются элемента.
Вот мой текущий код:
function getPosition(screenCoords)
{
// This function should return x and y coordinates on z-transformed element and I have no idea how to achieve that.
return {x: 2500, y: 1500};
}
var $viewport = $(".viewport");
var $marker = $(".marker");
$viewport.on("click", function(e){
e.preventDefault();
var newMarkerPosition = getPosition({x: e.pageX, y: e.pageY});
$marker.css({
left: newMarkerPosition.x + "px",
top: newMarkerPosition.y + "px"
});
});
html, body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
.viewport {
width: 100%;
height: 100%;
overflow: hidden;
perspective: 1000px;
perspective-origin: 50% 50%;
}
.z-transformed-element {
width: 5000px;
height: 3000px;
transform-origin: 2500px 1500px;
background-color: gray;
position: relative;
transform: translateX(-2500px) translateY(-1500px) translateZ(-10000px);
}
.marker {
left: 0;
top: 0;
width: 200px;
height: 200px;
margin-left: -100px;
margin-top: -100px;
background-color: red;
border-radius: 100px;
position: absolute;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="viewport">
<div class="z-transformed-element">
<div class="marker"></div>
</div>
</div>
работает как шарм! Не знал о getBoundingClientRect(). Кажется, все упростилось. Большое спасибо! – GiedriusT
Рад, что я мог помочь! Для меня это тоже был учебный опыт. – Serlite
Но теперь я попытался повернуть элемент и начал неправильно вычислять координаты. Можете ли вы придумать что-то, что работает и для вращающегося элемента? Меня интересует rotateX и rotateY. – GiedriusT