Jump to content
  • 0

Вертикальное выравнивание изображения в блоке


esche
 Share

Question

Здравствуйте.

Изначально стояла задача центрирования изображения по вертикали и по горизонтали внутри блока. Таких блоков с изображениями несколько, соответственно, ширина и высота изображений может различаться. Ширина и высота блоков фиксированная, известна заранее.

Для горизонтального выравнивания использую - text-align:center;

Для вертикального выравнивания используется display:table-cell;verticl-align:middle

Для ограничения по ширине/высоте изображения (если изображение выходит за пределы блока, уменьшаем) max-width, max-height

Два последних условия продублированы expression-ами для IE6

Однако, в случае использования max-width внутри блока с display:table-cell ширина последнего растягивается до размера изображения в пикселях (до ресайза по max-width)

Дабы было понятнее о чем говорю (без ie6-хаков):

http://www.levik.info/test/display-cell.html

Подскажите, что изменить, чтоб ширина ячеек не "ползла"?

Или альтернативный вариант вертикально-горизонтального выравнивания в блоке.

ps. Вариант с "жестким" прописыванием ширины изображения в HTML-коде ( <img width="") хотелось бы исключить, потому как ширина и пропорции изображений разные (т.е. , возможно, рисунок, вытянутый вертикально, будет занимать не всю ширину блока), а хранить данные по всем картинкам не хоцца :blush: (хотя, возможно, и правильно)

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

В данном случае удобнее будет display: inline-block использовать. Плюсов несколько: ширина автоматом вычисляется, можно выравнивать по центру, блоки выстраиваются по горизонтали, высоту и ширину при необходимости также можно задать. С IE будут проблемы, но это тоже давно обходится

  <style type="text/css">
DIV {
display: inline; /* Строчный элемент */
zoom: 1; /* Устанавливаем hasLayout */
}
</style>

Link to comment
Share on other sites

  • 0
В данном случае удобнее будет display: inline-block использовать. Плюсов несколько: ширина автоматом вычисляется, можно выравнивать по центру, блоки выстраиваются по горизонтали, высоту и ширину при необходимости также можно задать. С IE будут проблемы, но это тоже давно обходится

Не совсем понял, чем именно удобнее inline... Или мы о разном...

Визуально, блок - это что-то вроде "рамки" для изображения.

Вычисление ширины блока не нужно - ширина блока задана, она фиксированная.

И как задать вертикальное выравнивание изображения по центру в inline-блоке?

Link to comment
Share on other sites

  • 0
Вот здесь описано похожее решение.

http://habrahabr.ru/blogs/css/71236/

Спасибо за ссылку.

Красивое решение. Жаль только, что с DOCTYPE Transitional не работает.

Сам нашел и причину такого глюка (новый "передовой движок" IE8) и как его обойти (примеры по ссылке в первом сообщении)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy