Как изменить изображение, перетаскивая другое к нему?

1

Поэтому я пытаюсь изменить изображение A на изображение B, перетащив изображение B поверх него. Я работал с одной картиной, но хочу, чтобы она работала с несколькими. Это изображение рода фотографии, что я хочу делать.

Что я до сих пор в JS:

function movePlayer1() {
    if (document.getElementById("pack")) {
        document.getElementById("spot1").src = "image/" + playerImg1;
    } else {
        document.getElementById("spot1").src = "image/" + playerImg2;
    }
}
document.querySelectorAll("img#spot1")[0].addEventListener("dragover", movePlayer1);
Я новичок в Javascript, но я пробовал несколько вещей и не мог понять, как это сделать, поэтому я надеюсь, что кто-то может мне помочь в этом. Если мне нужно предоставить дополнительную информацию, пожалуйста, дайте мне знать!

(Когда я перетаскиваю "playerImg2" над document.getElementById("pack"), он по-прежнему изменяется на "playerImg1" вместо "playerImg2".)

Благодарю.

  • 0
    Какие ошибки в консоли, когда вы нажмете F12?
  • 0
    Не удалось загрузить ресурс: изображение / не определено, сервер ответил со статусом 404 (не найдено)
Показать ещё 4 комментария
Теги:
function
image
draggable

1 ответ

0
Лучший ответ

Используйте фоновое изображение для ваших областей сбрасывания,
и играть с перетаскиванием ваших изображений:

const isClass = (cl, el) => el.classList.contains(cl);
const on = (typ, el, cb) => el.addEventListener(typ, cb);
let dragEl;

on("dragover",  document, (e) => e.preventDefault() );
on("dragend",   document, (e) => e.target.style.opacity = 1 );
on("dragstart", document, (e) => {
  dragEl = e.target;
  e.target.style.opacity = 0;
});
on("drop", document, (e) => {
  e.preventDefault();
  if(isClass("dropArea", e.target)) {
    dragEl.remove();
    e.target.append( dragEl );
  }
});
.dropArea {
  display:inline-block; vertical-align:middle;
  width: 57px; height: 87px; margin: 8px;
  background: url('https://i.stack.imgur.com/5nsDs.png') no-repeat 50% 50% / cover;
}
.dropArea.small{
  width:  30px; height: 40px;
}
.dropArea img{
  width: 100%; height: 100%;
  transition: 0.3s;
}
<div class="dropArea"><img src="https://i.stack.imgur.com/sBQ1c.png" draggable="true"></div>
<div class="dropArea"><img src="https://i.stack.imgur.com/kR6MI.png" draggable="true"></div>
<div class="dropArea"><img src="https://i.stack.imgur.com/XSBBq.png" draggable="true"></div>
<div class="dropArea small"></div>
<div class="dropArea small"></div>
<div class="dropArea small"></div>
  • 0
    Большое вам спасибо, человек! Это именно то, что мне было нужно! :)
  • 0
    @ Донско, пожалуйста

Ещё вопросы

Сообщество Overcoder
Наверх
Меню