Я пытаюсь расположить свои <div> один под другим, но они все равно оказываются на одной строке, я пытался использовать подход row и col, но все равно это не работает, ответы на SO также не сработали.
В настоящее время мой код такой
.dragAndDropBox{
position: absolute;
width: 80%;
height: 100%;
border: 1px solid #fff;
background-color: gainsboro;
border-radius: 5px;
}
.dragAndDropBox:hover{
position: absolute;
width: 80%;
height: 100%;
border: 1px solid #fff;
background-color: gray;
border-radius: 5px;
}
.dragAndDropBox .dragAndDropUpload{
position: absolute;
margin: 0;
padding: 0;
width: 100%;
height: 100%;
outline: none;
opacity: 0;
}
.dragAndDropBox .dragAndDropProgressBar{
position: absolute;
bottom: 0;
margin: 0;
padding: 0;
width: 100%;
max-height: 10%;
outline: none;
}
.dragAndDropBox .dragAndDropText{
padding-top: 2%;
text-align: center;
line-height: 1rem;
color: #3b3b3b;
font-family: Arial
}<div class = "uploadBox w-100">
<div class = "uploadDropBox">
<div class = "dragAndDropBox">
<input
accept = "image/*"
class = "dragAndDropUpload"
type = "file"
/>
<div class = "dragAndDropText">Drag / Browse</div>
<div
bsstyle = "success"
class = "dragAndDropProgressBar mt-1 progress">
<div
role = "progressbar"
class = "progress-bar progress-bar-striped"
style = "width: 0%;"
aria-valuenow = "0"
aria-valuemin = "0"
aria-valuemax = "100"
/>
</div>
</div>
</div>
<div class = "uploadedBox w-100">
<div>Filename Delete View</div>
</div>
</div>Я использую Bootstrap 4.3.1






Используйте <br> в качестве разрыва строки (конец строки).
У <div> есть position: absolute, что ставит их друг над другом.
Я бы предложил добавить position: relative к .dragAndDropBox, чтобы все абсолютно позиционированные элементы имели относительный элемент для ссылки.
Вот рабочий пример: https://jsfiddle.net/yjdkne3b/
.dragAndDropBox {
position: relative;
width: 80%;
height: 200px;
border: 1px solid #fff;
background-color: gainsboro;
border-radius: 5px;
}
.dragAndDropBox:hover {
background-color: gray;
}
.dragAndDropBox .dragAndDropUpload {
position: absolute;
margin: 0;
padding: 0;
width: 100%;
height: 100%;
outline: none;
opacity: 0;
}
.dragAndDropBox .dragAndDropProgressBar {
position: absolute;
bottom: 0;
margin: 0;
padding: 0;
width: 100%;
max-height: 10%;
outline: none;
}
.dragAndDropBox .dragAndDropText {
padding-top: 2%;
text-align: center;
line-height: 1rem;
color: #3b3b3b;
}<div class = "uploadBox w-100">
<div class = "uploadDropBox">
<div class = "dragAndDropBox">
<input accept = "image/*" class = "dragAndDropUpload" type = "file" />
<div class = "dragAndDropText">Drag / Browse</div>
<div bsstyle = "success" class = "dragAndDropProgressBar mt-1 progress">
<div role = "progressbar" class = "progress-bar progress-bar-striped" style = "width: 0%;" aria-valuenow = "0" aria-valuemin = "0" aria-valuemax = "100" />
</div>
</div>
</div>
<div class = "uploadedBox w-100">
<div>Filename Delete View</div>
</div>
</div>Я надеюсь, что это решение, которое вы ищете.
Кроме того, вам не нужно повторять свойства элемента при наведении. Если при наведении меняется только фон, можно изменить только это, а другие свойства останутся прежними. :)
Я думаю, это из-за «position: absolute» в вашем CSS. Это заставляет блочные элементы использовать столько места, сколько им нужно. Подробнее об этом можно прочитать здесь: Добавление position: absolute к блочному элементу приводит к тому, что он ведет себя как встроенный?
Я думаю, вы должны изменить абсолютную позицию на относительную.