Яндекс.Метрика

Дизайн-журнал №1. Актуальная информация для дизайнеров, веб дизайнеров, программистов и разработчиков сайтов.

Создание улучшенных адаптивных галерей изображений с использованием Flexbox

29 декабря 2016 | Опубликовано в css | 1 Комментарий »

Одна из самых распространенных проблем в адаптивном веб-дизайне — проблема «висячей строки». Легко расположить элементы примерно одинакового размера в одну строку, когда на это хватает места:

 

 


Но когда окно браузера сужается, последний элемент не помещается на строку и падает вниз, оставаясь в одиночестве:

В идеале все элементы, которые переносятся на новую строку, займут на ней то же пространство, что и оставшиеся выше, создавая более цельный дизайн:

Для решения именно таких задач и был создан flexbox. Допустим, у нас есть галерея изображений с одинаковыми пропорциями в элементе шапки:

<header>
        <div><img src="image1.jpg" alt></div>
        <div><img src="image2.jpg" alt></div></header>

Лучше поместить каждое изображение в блочный элемент из-за особенности работы некоторых версий браузера Firefox при масштабировании изображений с использованием Flexbox.

После этого запишем следующий код CSS только с помощью нового синтаксиса, ради ясности и краткости:

header {
        font-size: 0;
        display: flex;
        flex-flow: row wrap;
}
header > * {
        flex: auto;
        width: 200px;
}
header > * img {
        width: 100%;
        height: auto;
}

Как видите на примере выше, при изменении размеров окна браузера проблема с расположением изображений решена изящно: изображение, которое оттолкнулось на новую строку, займет на ней ширину, равную ширине верхней строки. Если к этому изображению присоединится следующее при сужении окна, они поделят размер строки пополам.

Можно считать ширину блочного элемента в коде CSS минимальной шириной: когда блоки, которые должны быть шириной хотя бы 200px, не влазят на строку все вместе, один отталкивается на следующую строку, чтобы остальным хватило места.

Такой подход хорошо подойдет и для не графических элементов разной высоты и различных пропорций.

Использована фотография Jeremiah Wilson, лицензированная по лицензии Creative Commons.

Автор урока Dudley Storey

Перевод — Дежурка

Смотрите также:




Комментарии

Оставить ответ


семь − = 5

Вставить изображение