В эти выходные я избивал себя, чтобы обойти это. У меня есть сайт, на котором используется Bootstrap 3.0 и карусель с фоновыми изображениями, и мне удалось воспроизвести свой вопрос в небольшой скрипке. У меня есть div с максимальной высотой с изображением внутри. Изображение обычно будет больше, чем div (по крайней мере, по высоте). Я использую класс img-responsive
из начальной загрузки, чтобы убедиться, что в мобильных браузерах изображение уменьшается. Это причина, по которой я увеличиваю div до максимальной высоты и не устанавливаю для него фиксированную высоту.
У меня такой вопрос: как добиться выравнивания изображения по вертикали по центру? Я пробовал:
- Добавление классов
display: table
иdisplay: table-cell
, но ячейка таблицы не может иметь максимальную высоту. - Выровнять вещи по вертикали, но ничего не получается.
- Установка отрицательного поля на изображении с помощью javascript, но это делает div меньше, так как div использует изображение для своего размера.
- Использование фона css вместо встроенного изображения. Это не делает div (самое большее) таким же большим, как изображение, и не позволяет гибко увеличивать / уменьшать размер.
Сценарий: http://jsfiddle.net/SabbeRubbish/dZQ26/4/
<div class="carousel-inner">
<div id="frame" class="item active">
<img src="https://www.google.com/images/srpr/logo11w.png"
class="img-responsive" />
</div>
</div>
Может ли кто-нибудь порекомендовать мне хорошие и чистые способы центрировать изображение по вертикали? Или скажите, какого черта я делаю не так? :-) Спасибо.
PS: почему по центру вертикально? Если страница очень широкая, появляется большая область обрезки, так как изображение увеличивается вместе со страницей. Лучше показывать середину картинки, а не верх.