Я хочу расположить div в центре экрана. Проблема в том, что когда div маленький, слева 45% выглядит нормально, но когда div длиннее (то есть больше ширины), мне нужно сделать его слева 30%
Есть ли разумный способ разместить div в центре в зависимости от размера div.
body {
background:blue;
}
.box {
position: absolute;
top:10px;
left:30%;
background:white;
padding:10px;
border-radius:10px;
}<div class = "box">
This is long div so need left = 30 percent
</div>





Вы можете центрировать его по горизонтали таким образом:
.box {
position: absolute;
top:10px;
left:50%;
background:white;
padding:10px;
border-radius:10px;
transform: translateX(-50%);
}
Вы можете выровнять компонент по центру, используя атрибут display: flex;.
body {
flex: 1;
background:blue;
display: flex;
justify-content: center;
}
.box {
position: absolute;
top:10px;
background:white;
padding:10px;
border-radius:10px;
}<div class = "box">
This is long div so need left = 30 percent
</div>Я использую div как виджет... Так что проблема в том, что я не могу дать body {flex}, так как это повлияет на хостинг. Есть ли другое исправление?
Вы можете обернуть элемент виджета гибким элементом.
чтобы центрировать div по горизонтали, простое решение - установить для его поля значение «авто»:
body {
background:blue;
}
.box {
width: fit-content;
margin: auto;
background:white;
padding:10px;
border-radius:10px;
}
+1 Очень творческий способ сделать это. Обычно я просто позиционирую себя как
left: 50%иmargin-left: -[[width / 2]], но я буду иметь это в виду.