Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.03.2016, 10:14
Аспирант
Отправить личное сообщение для shurik_shink Посмотреть профиль Найти все сообщения от shurik_shink
 
Регистрация: 22.05.2015
Сообщений: 35

Как выровнять изображение по высоте внутри 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>
Ответить с цитированием
  #2 (permalink)  
Старый 29.03.2016, 11:03
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

<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>
Ответить с цитированием
  #3 (permalink)  
Старый 29.03.2016, 12:31
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

<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>
Ответить с цитированием
  #4 (permalink)  
Старый 29.03.2016, 14:09
Аспирант
Отправить личное сообщение для shurik_shink Посмотреть профиль Найти все сообщения от shurik_shink
 
Регистрация: 22.05.2015
Сообщений: 35

Спасибо, работает оба варианта

Но тут наступил на еще одни грабли: если для родительского контейнера задать дополнительно 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>


И как добавить кнопку посмотреть над кодом - что бы можно было прямо в теме форума посмотреть как работает код.

Последний раз редактировалось shurik_shink, 29.03.2016 в 23:09.
Ответить с цитированием
  #5 (permalink)  
Старый 29.03.2016, 18:54
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

box-sizing: border-box для родителя.

Сообщение от shurik_shink
И как добавить кнопку посмотреть над кодом - что бы можно было прямо в теме форума посмотреть как работает код.
Код:
[JS run]
Ответить с цитированием
  #6 (permalink)  
Старый 29.03.2016, 23:32
Аспирант
Отправить личное сообщение для shurik_shink Посмотреть профиль Найти все сообщения от shurik_shink
 
Регистрация: 22.05.2015
Сообщений: 35

Сообщение от Ruslan_xDD Посмотреть сообщение
box-sizing: border-box для родителя
Спасибо, работает. - изображение четко по центру родительского div независимо от размера отступов.

А можно изображение подвинуть в лево на эти самые 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>
Ответить с цитированием
  #7 (permalink)  
Старый 30.03.2016, 09:09
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Оно?
<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>
Ответить с цитированием
  #8 (permalink)  
Старый 30.03.2016, 10:40
Аспирант
Отправить личное сообщение для shurik_shink Посмотреть профиль Найти все сообщения от shurik_shink
 
Регистрация: 22.05.2015
Сообщений: 35

Сообщение от Ruslan_xDD Посмотреть сообщение
Оно?
border-right: 300px solid transparent;
Да оно. Спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как выровнять по высоте элементы li при изменении ширины? malsyst jQuery 12 22.01.2016 16:54
Div внутри Div. Как сделать hover только для самого верхнего? Siend Общие вопросы Javascript 2 19.03.2015 22:16
Как вернуть div и все вложенные в него элементы в первоначальное состояние? lucky89 Общие вопросы Javascript 17 26.02.2015 18:41
Как узнать что кликнули по созданному DIV DIrectman Events/DOM/Window 2 19.01.2015 17:59
Как сделать обход элементов внутри DIV reno4 jQuery 4 24.07.2013 13:30