У меня есть проект перетаскивания в реаги, где я пытаюсь перетащить тексты / изображения / SVG из вкладок и клонировать его, а затем бросить клон в div. Я делаю это с помощью coneNode и определяю положение элемента x & y. Поскольку позиции x & y - это stati c, а div , который является "dropZone", является flexbox, всякий раз, когда окно изменяет размеры элементов внутри, должно быть относительно dropZone div .
То, что я пробовал -:
- Сделать внешний div-абсолют и внутренние div-теги и p-теги относительными
- Проблема это означает, что внутренние теги div и p привязываются к верхней правой части
- Рассчитайте метод getBoundingClientRect () для отброшенного элемента, а затем выясните относительный X и относительный -Y
- Проблема этого подхода заключается в том, что он выравнивает элемент, специфицированный c, по телу, а не по "dropZone" div
Необходимая мне функциональность:
- Пользователи должны иметь возможность щелкнуть по вкладке и перетащить клонированные тексты / изображения / SVG в зону перетаскивания. Клонированный элемент должен быть вставлен в позиции xy курсора
- Пользователь должен иметь возможность перемещать отброшенные тексты / изображения / SVG в пределах зоны перетаскивания
У меня есть позиция р-тега исправлено , я знаю, что это неправильный подход. Я должен либо слушать события изменения размера, либо как-то получить относительные X и Y div? Я полностью потерян, и любая помощь будет отличной. Спасибо !!
Вот изображение HTML structrue -: HTML -структура
А вот css
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
"Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
background-color: rgb(255, 255, 255);
color: black;
height: 100% !important;
}
#root {
height: 100vh;
width: 100%;
}
.App {
height: 100% !important;
min-height: 100% !important;
display: flex !important;
flex-direction: column !important;
}
.MuiPaper-root {
background-color: white !important;
color: black !important;
text-align: center;
font-family: sans-serif;
font-size: 36px;
padding: 20px;
flex: 1;
}
#dropZone {
font-family: sans-serif;
background-color: rgb(135, 182, 182);
font-size: 36px;
padding: 20px;
flex: 1;
/* justify-content: space-between; */
position: relative;
}
.MuiTabs-root {
background-color: rgb(152, 167, 126);
margin: 5px;
}
code {
font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
monospace;
}
p {
position: fixed;
}
#data {
height: fit-content;
width: fit-content;
}
#dropDragZone {
position: absolute;
}
Вот видео на YouTube, посвященное проблеме: ссылка