Нужна помощь со сменой цвета кубика
Опишу что мне нужно, и хотел бы узнать, в какую сторону двигаться и где искать. У меня есть 4 кубика. Три из них разного цвета. когда ты переносишь кубик к 4, он нейтрального цвета, то после того как навел и отпустил красный кубик пропадает и меняет цвет серого кубика, на красный. Момент со скрытием и перемещением сделал, но сколько не искал, не могу правильно сформулировать. Куда двигаться просто.
Ответы (1 шт):
Автор решения: UserTest013
→ Ссылка
const cubes = document.querySelectorAll(".box");
const rubik = document.querySelector(".grey");
let cube;
cubes.forEach((cube) => {
cube.style.setProperty('--x', `${Math.random() * (window.innerWidth - 100)}px`);
cube.style.setProperty('--y', `${Math.random() * (window.innerHeight - 100)}px`);
});
document.addEventListener('mousedown', (event) => cube = event.target.classList.contains('box') ? event.target : undefined);
document.addEventListener('mousemove', (event) => {
if (cube) {
cube.style.setProperty('--x', `${event.clientX - 50}px`);
cube.style.setProperty('--y', `${event.clientY - 50}px`);
}
});
document.addEventListener('mouseup', (event) => {
const rect = cube.getBoundingClientRect();
const rubikRect = rubik.getBoundingClientRect();
if (rect.top > rubikRect.top && rect.bottom < rubikRect.bottom && rect.left > rubikRect.left &&
rect.left + rect.width < rubikRect.left + rubikRect.width) {
cube.hidden = true;
rubik.style.backgroundColor = getComputedStyle(cube).backgroundColor;
}
cube = undefined;
});
html,
body {
height: 100%;
}
.box {
position: absolute;
width: 100px;
height: 100px;
z-index: 10;
transform: translate(var(--x, 0), var(--y, 0));
}
#red {
background-color: red;
}
#green {
background-color: green;
}
#blue {
background-color: blue;
}
.grey {
position: absolute;
width: 200px;
height: 200px;
background-color: rgb(173, 173, 173);
}
<div id="red" class="box"></div>
<div id="green" class="box"></div>
<div id="blue" class="box"></div>
<div id="grey" class="grey"></div>