clientX/clientY
Attempting to use clientX/clientY using root as the origin of coordinates.
by David Iglesias
HTML
<div id="transform">
<div id="root">
Root
<div id="wrapper">
<div id="content">
Content!<br />
300 x 300<br />
(after <tt>scale(1.5)</tt>)
</div>
</div>
</div>
<div id="out"></div>
CSS
* {
box-sizing: border-box;
font-family: sans-serif;
}
tt { font-family: monospace; font-size: 1.2em; }
#root {
width: 500px;
height: 300px;
border: 1px solid black;
background: #eee;
}
#wrapper {
background: rgba(255,127,0,.5);
pointer-events: none;
}
#content {
pointer-events: auto;
transform-origin: 0 0;
transform: translate(90px, -10px) rotate(10deg) scale(1.5);
background: #fabada;
border: 1px solid red;
width: 200px;
height: 200px;
}
#out {
margin: -5px 0 0 -5px; padding: 0;
position: absolute;
pointer-events: none;
width: 20px;
height: 20px;
background: #09f;
font-size: 20px;
border-radius: 20px;
}
JavaScript
function log(n, x, y) {
out.style.left = `${x}px`;
out.style.top = `${y}px`;
}
let originEl = root; // origin of coordinates (glassPane).
root.addEventListener('pointermove', function(e) {
let origin = originEl.getBoundingClientRect();
let offsetX = e.x - origin.x;
let offsetY = e.y - origin.y;
log(e.target.id, offsetX, offsetY);
});