#html #css
#HTML #css — файл #css
Вопрос:
Я видел этот шаблон для центрирования элемента на веб-сайте в коде кого-то другого:
img {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
}
<img src="https://placebear.com/200/300" alt="picture-one" />
Работает нормально. Без сомнения!
Но я не могу представить, что на самом деле делает CSS-код.
Я видел похожий код, в котором позиционирование использовалось для расширения дочернего элемента до размера его родительского.
#child {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: lime;
}
#wrap {
width: 100%;
height: 800px;
}
<div id="wrap">
<div id="child"></div>
</div>
Но здесь для меня это не имеет никакого смысла.
Может ли кто-нибудь объяснить мне, как работает эта впервые показанная техника?
Что делают отдельные свойства и как это в конечном итоге приводит к получению результата?
Я был бы признателен вам за это.
Ответ №1:
#child {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
height: 100px;
width: 250px;
margin: auto;
background-color: lime;
}
#wrap {
width: 100%;
height: 800px;
}
<div id="wrap">
<div id="child"></div>
</div>
Это потому, что изображение имеет ширину и высоту по умолчанию.
Когда вы используете
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
Элемент получит размер окна и разместит элемент внутри него.
#child {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
height: 100px;
width: 250px;
margin: auto;
background-color: lime;
}
#wrap {
width: 100%;
height: 800px;
position: relative;
}
<div id="wrap">
<div id="child"></div>
</div>
Итак, если вы зададите position относительно #wrap, абсолютная #дочерняя позиция будет соответствовать родительской.
Надеюсь, это поможет! Приветствия!
Ответ №2:
position: absolute
позволяет вам установить расстояние от вашего элемента сверху, снизу, справа и слева от краев всей страницы.
Во втором примере, который вы показали, даже если #wrap имеет высоту 800 пикселей, расстояние #child от каждой стороны страницы установлено равным 0. Таким образом, оно охватывает всю страницу!
Надеюсь, это помогло!
Ответ №3:
#inner {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
height: 100px;
width: 250px;
margin: auto;
background-color: #000; border:1px solid #fff;
}
#container {
width: 100%;
height: 800px;
}
<div id="container">
<div id="inner"></div>
</div>