Here : https://codepen.io/uidesigner/pen/rPzroa , after I upload image in 1st mask image, I am able to drag the uploaded image when I try in any other part of page
But user should only be able to drag when user try inside mask image....
Issue :
I am not able to drag the uploaded image inside mask image 2....
fileupa.onchange = e => {
target_imga.src = URL.createObjectURL(fileupa.files[0]);
}
fileupb.onchange = e => {
target_imgb.src = URL.createObjectURL(fileupb.files[0]);
}
let prevX = 0,
prevY = 0,
translateX = 0,
translateY = 0,
scale = 1,
zoomFactor = 0.1;
function onDragStart(evt) {
if (evt.dataTransfer && evt.dataTransfer.setDragImage) {
evt.dataTransfer.setDragImage(evt.target.nextElementSibling, 0, 0);
}
prevX = evt.clientX;
prevY = evt.clientY;
}
function onDragOver(evt) {
translateX += evt.clientX - prevX;
translateY += evt.clientY - prevY;
prevX = evt.clientX;
prevY = evt.clientY;
updateStyle();
}
function updateStyle() {
let transform = "translate(" + translateX + "px, " + translateY + "px) scale(" + scale + ")";
if (document.querySelector('#uploadedImg img'))
document.querySelector('#uploadedImg img').style.transform = transform;
}
.masked-imga {
-webkit-mask-image: url(https://i.stack.imgur.com/EQpM4.png);
mask-image: url(https://i.stack.imgur.com/EQpM4.png);
-webkit-mask-position: center center;
mask-position: center center;
-webkit-mask-repeat: no-repeat;
mask-repeat: no-repeat;
display: block;
width: 100%;
height: 100%;
}
.masked-imgb {
-webkit-mask-image: url(https://i.stack.imgur.com/EQpM4.png);
mask-image: url(https://i.stack.imgur.com/EQpM4.png);
-webkit-mask-position: center center;
mask-position: center center;
-webkit-mask-repeat: no-repeat;
mask-repeat: no-repeat;
display: block;
width: 100%;
height: 100%;
}
.minaimga,
.minaimgb {
display: block;
background-color: black;
height: 500px;
}
<input type="file" id="fileupa" />
<input type="file" id="fileupb" />
<div class="minaimg masked-imga" ondragover="onDragOver(event)" ondragover="onDragOver(event)">
<div draggable="true" ondragstart="onDragStart(event)" id="uploadedImg">
<div class="minaimga">
<!-- give an id for ease of selection -->
<img id="target_imga" alt="">
<div></div>
</div>
</div>
</div>
<div class="minaimg masked-imgb" ondragover="onDragOver(event)" ondragover="onDragOver(event)">
<div draggable="true" ondragstart="onDragStart(event)" id="uploadedImg">
<div class="minaimgb">
<!-- give an id for ease of selection -->
<img id="target_imgb" alt="">
<div></div>
</div>
</div>
</div>