if (dx > 0) {mat.e = 0;}
else if (dx < (elRect.width - imgRect.width)) {mat.e = elRect.width - imgRect.width;}
else {mat.e = dx;}
mat.translateSelf(dx, dy);
document.querySelector('.fertezj img').style.transform = mat.toString();
document.querySelector('.fertezj img').style.transform = "translate(" + dx + "px," + dy + "px)";
https://habr.com/ru/articles/696266/comments/#comment_24864662
https://stackoverflow.com/questions/73678841/how-to-transform-the-canvas-using-dommatrix
https://www.javascripture.com/DOMMatrix
https://developer.mozilla.org/en-US/docs/Web/API/DOMMatrix/DOMMatrix
https://developer.mozilla.org/en-US/docs/Web/API/DOMMatrix
https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint
https://developer.mozilla.org/en-US/docs/Web/API/DOMMatrixReadOnly/translate
document.addEventListener("DOMContentLoaded", function() {
let img = document.querySelector('.fertezj img');
document.querySelectorAll('.fertezj').forEach(el => {
let _startX, _startY, _scrollLeft, _scrollTop, max_width, max_height, min_width, min_height;
const mat = new DOMMatrix();
const pointerHandler = (event) => {
const {
screenX,
screenY
} = event;
let imgRect = img.getBoundingClientRect();
let elRect = el.getBoundingClientRect();
if (event.type === "pointerdown") {
document.addEventListener("pointermove", pointerHandler);
document.addEventListener("pointerup", pointerHandler);
_startX = screenX;
_startY = screenY;
_scrollLeft = imgRect.left - elRect.left;
_scrollTop = imgRect.top - elRect.top;
}
if (event.type === "pointerup") {
document.removeEventListener("pointermove", pointerHandler);
document.removeEventListener("pointerup", pointerHandler);
}
if (event.type === "pointermove") {
const dx = _scrollLeft + (screenX - _startX);
const dy = _scrollTop + (screenY - _startY);
if (dx <= 0 && dx >= (elRect.width - imgRect.width)) mat.e = dx;
if (dy <= 0 && dy >= (elRect.height - imgRect.height)) mat.f = dy;
document.querySelector('.fertezj img').style.transform = mat.toString();
document.querySelector('#raz').innerHTML = "";
}
event.preventDefault();
}
el.addEventListener("pointerdown", pointerHandler);
})
});