Dobrovoi Master
сделано с душой
В состоянии постоянного подключения...

Абсолютное центрирование отзывчивого изображения на CSS

Для абсолютного горизонтального и вертикального центрирования элементов на странице предлагаются различные методы, например, на Хабре, ещё в 2013г был представлен перевод отличной статьи с решением от Стефана Шоу, написанной в своё время для Smashing Magazine.
Так что, в этом плане, ничего нового не открою, с центрированием элементов всё предельно ясно.

Однажды, при разработке очередного лайтбокса, мне понадобилось сделать так чтобы просматриваемые , не только выводились абсолютно по центру, но и были гарантированно отзывчивыми, т.е. гибкими и корректно отображающимися при просмотре на экранах различных пользовательских устройств, вне зависимости от размеров оригинальной картинки.
 
Центрирование отзывчивого изображения
 
Для центрирования решение нашёл быстро, использовал flexboxдля контейнера лайтбокса и один из самых простых способов трансформации transform: translate(-50%, -50%); непосредственно для изображения.

Способ конечно не идеальный, требующий дополнительной разметки. Фишка в том, что изображение с установленными максимально возможными значениями высоты и ширины max-width и
max-height в 100%, размещаем в div с нулевыми значениями высоты и ширины, который в свою очередь уже помещаем в контейнер лайтбокса с высотой и широтой 100%.

В заключении, стоит подробнее остановиться на преимуществах и недостатках данного метода. Что касаемо цнтрирования, при использовании flexbox контент может быть любой высоты или ширины, это несомненно плюс, однако напрочь отсутствует поддержка в IE 8-9 и требует разнообразные префиксы для корректной работы в современных браузерах.
Используя transform, в плюсе мы получаем минимальный код и изменяемую высоту, недостатки те же: не работает в IE 8, использование префиксов и может мешать работе других эффектов с transform.
Для реализации конкретно этой задачи, указанные недостатки, если вы не особо озабочены, что в результате увидят пользователи упорно сидящие на IE-шке старых версий, не должны вас волновать, на выхлопе мы получаем вполне себе рабочее решение.
Ну, а как реализовать отзывчивые изображения, корректно отображаемые во всех браузерах, мы рассматривали ранее на наглядных примерах.
Так что из всего вышеизложенного напрашивается простой вывод, что под определённые задачи выбираем определённое решение. Если кому известна универсальная метода, просветите, а пока смотрим демо и ковыряем код, при просмотре изменяйте размеры окна браузера:

С Уважением, Андрей .

Буду всем признателен, если поддержите проект — добавив блог в исключения AdBlock и поделитесь ссылкой на запись в своих соц-сетях:

Всего комментариев: 0

Оставить комментарий

Ваш email не будет опубликован.

Вы можете использовать следующие HTML тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>