Некорректно работает drag & drop, помогите найти ошибку или переписать уже существующий код. Хотел реализовать это: внутри контейнера генирируются фигуры с рандомной высотой, шириной и цветом; их можно перемещать.
let start = document.querySelector(".main__btn"),
game = document.querySelector(".container");
start.addEventListener("click",startGame);
function startGame(){
renderBox();
}
function renderBox(){
game.innerHTML = ""; // удаляем дивы
let box = document.createElement("div");
let boxSize = getRandom(30,500);
let gameSize = game.getBoundingClientRect();
let maxTop = gameSize.height - boxSize;
let maxLeft = gameSize.width - boxSize;
//drag&drop
let startCursorX,
startCursorY,
startX,
startY;
box.addEventListener("dragstart",function(e) {
startCursorX = e.pageX;//Начальная позиция курсора по оси X
startCursorY = e.pageY;//Начальная позиция курсора по оси Y
startX = box.style.marginLeft.replace("px","")*1;// Нам нужны только цыфры без PX
startY = box.style.marginTop.replace("px","")*1;
});
document.addEventListener("drag",function(e){
box.style.marginLeft = ((e.pageX - startCursorX)) + "px";
box.style.marginTop = ((e.pageY - startCursorY)) + "px";
});
box.addEventListener("dragend",function(e) {
box.style.position = "absolute";
box.style.marginLeft = startX + e.pageX- startCursorX + "px";//позиция элемента + позиция курсора - позиция курсоа в начале перетаскивания
box.style.marginTop = startY + e.pageY- startCursorY+ "px";
});
box.style.height = boxSize + "px";
box.style.width = boxSize + "px";
box.style.top = getRandom(0,maxTop) + "px";
box.style.left = getRandom(0,maxLeft) + "px";
box.style.backgroundColor = getRandomColor();
box.style.cursor = "pointer";
box.draggable = true;
game.style.position = "relative";
game.insertAdjacentElement("afterbegin",box);
}
function getRandomColor(){
return "#" + Math.floor(Math.random() * 16777215).toString(16);
}
function getRandom(min,max) {
return Math.floor(Math.random() * (max - min) + min);
}
function getCoords(elem) {
let box = elem.getBoundingClientRect();
return {
top: box.top + pageYOffset,
left: box.left + pageXOffset
}
}
.container{
margin: auto;
width: 700px;
height: 700px;
border: solid 2px red;
border-radius: 15px;
position: relative;
}
.main__btn{
cursor: pointer;
margin: auto;
width: 100px;
height: 30px;
background-color: transparent;
border: none;
border: solid 1px black;
border-radius: 10px;
}
<div class="container">
</div>
<button class="main__btn">запуск</button>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Всем доброго времени сутокПри изучении столкнулся с такой вот задачей, реализация компонентов в js
При выводе часов, минут и секунд , от 0 и до 10 данные выводятся одиночными цифрами , то есть 23:12:5 или 23:5:20, а нужно что бы было 23:12:05 или 23:05:20 Как...
Здравствуйте! Я мало что понимаю в mySQL, но так вышло, что я с ним связался
Есть общий 'login-layout' компонент который роутит другие компоненты :