Как выровнять изображение по высоте внутри div?
Вопрос: Как правильно установить vertical-align: middle; для <img>
Не удается выровнять изображение по центру. В интернете есть сведения что для того что бы выровнять по центру элемент необходимо задать стили: для parent{display: table;} для child{display: table-cell; vertical-align:middle} Но для изображения это не работает Подскажите кто знает - как правильно разместить изображение по высоте четко по центру родительского div?
<style>
div#div1{
display: table;
border: 1px solid green;
width: 100%;
height: 300px;
background-color: yellow;
text-align: center;
}
img#img1{
display: table-cell;
height: 100px;
vertical-align: middle;
}
</style>
<div id="div1">
<img id="img1" src="http://politrussia.com/upload/iblock/032/032e40743dba6b8e0ec37a7df1f89889.jpg"/>
</div>
|
<style>
#div1{
border: 1px solid green;
width: 100%;
height: 300px;
background-color: yellow;
text-align: center;
display : flex;
}
#img1{
height: 100px;
margin: auto;
}
</style>
<div id="div1">
<img id="img1" src="http://politrussia.com/upload/iblock/032/032e40743dba6b8e0ec37a7df1f89889.jpg"/>
</div>
|
<style>
div#div1{
border: 1px solid green;
width: 100%;
height: 300px;
background-color: yellow;
position: relative;
}
img#img1{
bottom: 0;
height: 100px;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0;
}
</style>
<div id="div1">
<img id="img1" src="http://politrussia.com/upload/iblock/032/032e40743dba6b8e0ec37a7df1f89889.jpg"/>
</div>
|
Спасибо, работает оба варианта
Но тут наступил на еще одни грабли: если для родительского контейнера задать дополнительно padding-right: 300px; то изображение сдвигается в право на 300px от центра родительского div. Подскажите - как от этого избавиться?
<style>
div#div1{
border: 1px solid green;
width: 100%;
height: 300px;
background-color: yellow;
position: relative;
padding-right: 300px;
}
img#img1{
bottom: 0;
height: 100px;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0;
}
</style>
<div id="div1">
<img id="img1" src="http://politrussia.com/upload/iblock/032/032e40743dba6b8e0ec37a7df1f89889.jpg"/>
</div>
И как добавить кнопку посмотреть над кодом - что бы можно было прямо в теме форума посмотреть как работает код. |
box-sizing: border-box для родителя.
Цитата:
Код:
[JS run] |
Цитата:
А можно изображение подвинуть в лево на эти самые padding: 300px; от центра, что бы изображение было по среди той области родительского div что не является padding и margin. !К предыдущему вопросу: если не указивать box-sizing: border-box для родителя изображение как ни странно сдвигается в право, несмотря на то что задан padding-right: 300px; хотя по логике вроде должно было бы в обратную сторону - в лево. И я хочу добиться что если указано для родителя padding-right: 300px; то изображение должно сдвинуться в лево от центра на 300px; Пример для наглядности
<style>
div#div1{
box-sizing: border-box;
border: 1px solid green;
width: 100%;
height: 300px;
background-color: yellow;
position: absolute;
top: 0; left: 0;
padding-right: 300px;
}
img#img1{
bottom: 0;
height: 100px;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0;
}
div#div2{
position: absolute; top: 0; right: 0; width: 300px; height: 300px; background-color: green;
}
</style>
<div id="div1">
<img id="img1" src="http://politrussia.com/upload/iblock/032/032e40743dba6b8e0ec37a7df1f89889.jpg"/>
</div>
<div id="div2"></div>
|
Оно?
<style>
div#div1{
box-sizing: border-box;
border: 1px solid green;
width: 100%;
height: 300px;
background-color: yellow;
position: absolute;
top: 0; left: 0;
padding-right: 300px;
}
img#img1{
border-right: 300px solid transparent;
bottom: 0;
height: 100px;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0;
}
div#div2{
position: absolute; top: 0; right: 0; width: 300px; height: 300px; background-color: green;
}
</style>
<div id="div1">
<img id="img1" src="http://politrussia.com/upload/iblock/032/032e40743dba6b8e0ec37a7df1f89889.jpg"/>
</div>
<div id="div2"></div>
|
Цитата:
|
| Часовой пояс GMT +3, время: 11:08. |