Адаптивный CSS3 Manasory без JavaScript
Наверняка все уже успели привыкнуть к такому тренду в веб-дизайне как Masonry (в переводе с анг. это кирпичная кладка), по другому его ещё называют плиточный дизайн, интересный способ вывода контента, позволяющий рационально использовать всё имеющееся пространство сайта. Самым известным примером использования плиточного дизайна, является, наверное, Googl+. Ну, а законодателями и зачинателями сего действа стали «мягкотелые», когда выпустили в свет Windows8, где как раз и были впервые использованы плитки с логотипами приложений и кратким содержанием. Конечно такая метода применялась и раньше, но всё больше в виде экспериментов разработчиков-энтузиастов.
Существуют различные способы реализации компактных html-блоков с содержанием в виде кирпичной кладки, самый распространенный, это использование специализированных плагинов jQuery, например скрипт David'a DeSandro, который так и называется Masonry (кирпичная кладка). Развернутый мануал по установе, настройке и работе скрипта написал в своё время Kama, кому интересно можете изучить подробно.
Мы же сегодня, рассмотрим не менее интересный, а намой, конечно же очень субъективный взгляд, самый интересный способ вывода контента в форме кирпичной кладки, исключительно средствами CSS, без подключения к работе дополнительных javascript плагинов и громоздких библиотек.
HTML структура
<!-- Контейнер с адаптиными блоками --> <div class="masonry"> <!-- Адаптивные блоки с содержанием --> <div class="item"> <img src="/350x200"> <br>Здесь размещаете описание товара, картинки или видео... <a href="###">Подробнее »</a> </div> <div class="item"> <img src="/250x250"> <br>Здесь размещаете описание товара, картинки или видео... <a href="###">Подробнее »</a> </div> <div class="item"> <img src="/470x320"> <br>Здесь размещаете описание товара, картинки или видео... <a href="###">Подробнее »</a> </div> <div class="item"> <img src="/250x150"> <br>Здесь размещаете описание товара, картинки или видео... <a href="###">Подробнее »</a> </div> <div class="item"> <img src="/300x250"> <br>Здесь размещаете описание товара, картинки или видео... <a href="###">Подробнее »</a> </div> <div class="item"> <img src="/450x300"> <br>Здесь размещаете описание товара, картинки или видео... <a href="###">Подробнее »</a> </div> <div class="item"> <img src="/250x200"> <br>Здесь размещаете описание товара, картинки или видео... <a href="###">Подробнее »</a> </div> <div class="item"> <img src="/250x150"> <br>Здесь размещаете описание товара, картинки или видео... <a href="###">Подробнее »</a> </div> <div class="item"> <img src="/250x150"> <br>Здесь размещаете описание товара, картинки или видео... <a href="###">Подробнее »</a> </div> <div class="item"> <img src="/280x190"> <br>Здесь размещаете описание товара, картинки или видео... <a href="###">Подробнее »</a> </div> <div class="item"> <img src="/500x400"> <br>Здесь размещаете описание товара, картинки или видео... <a href="###">Подробнее »</a> </div> <!-- Конец адаптивных блоков с содержанием --> </div> <!-- Конец контейнера с адаптивными блоками -->
Контейнеры, в которых размещается необходимый контент, оформлены с помощью свойств css3 в виде прямоугольных плиток, с лёгкой наружной тенью box-shadow и изменениями алгоритма расчета ширины и высоты элемента box-sizing, с присвоенным значением border-box.
Для формирования внешнего вида блоков и построения их в нужный нам макет в форме отдельных плиток, используется минимум кода css, ничего лишнего. Краткие комментарии к свойствам, которые мы пропсиали непосредственно в исходниках, помогут Вам быстрее разобраться, по желанию подстроить блоки под свой изысканный вкус.
/* ------------- Контейнер с адаптивными блоками------------- */ .masonry { margin: 1.5em 0; padding: 0; column-gap: 1.5em; /* Общее расстояние между колонками */ font-size: .85em; -moz-column-gap: 1.5em; /* Расстояние между колонками для Firefox */ -webkit-column-gap: 1.5em; /* Расстояние между колонками для Safari, Chrome и iOS */ } /* Элементы в виде плиток с содержанием */ .item { display: inline-block; background: #fff; padding: 1em; margin: 0 0 1.5em; width: 100%; box-sizing: border-box; /* Изменения алгоритма расчета ширины и высоты элемента.*/ -moz-box-sizing: border-box; /* Для Firefox */ -webkit-box-sizing: border-box; /* Для Safari, Chrome, iOS иAndroid */ box-shadow: 2px 2px 4px 0 #ccc; /* Внешняя тень плиток */ } /* Стили картинок, видое и фреймов внутри адаптивных плиток */ img, iframe { max-width: 100%; height: auto; display: block; } /* Стили ссылок внутри плиток */ .item a { text-decoration: none; color: #359CC6; margin: 0 10px; } /* Стили ссылок при наведении */ .item a:hover { color: #E88F00; border-bottom: 1px dotted #9F1D35; } /* Медиа-запросы для различных размеров адаптивного макета */ @media only screen and (min-width: 400px) { .masonry { -moz-column-count: 2; -webkit-column-count: 2; column-count: 2; } } @media only screen and (min-width: 700px) { .masonry { -moz-column-count: 3; -webkit-column-count: 3; column-count: 3; } } @media only screen and (min-width: 900px) { .masonry { -moz-column-count: 4; -webkit-column-count: 4; column-count: 4; } } @media only screen and (min-width: 1100px) { .masonry { -moz-column-count: 5; -webkit-column-count: 5; column-count: 5; } } @media only screen and (min-width: 1280px) { .wrapper { width: 1260px; } }
Где применять такой способ вывода информации? Да где угодно. У вас на блоге или сайте, есть рубрики(категории), заделайте представительную картинку, соответствующую тематике категории, добавьте небольшое описание, приправьте всё это ссылочкой на страницу этой самой рубрики, и разместите всё это дело на главной странице. Или же, организуйте вывод новостей, кратких анонсов самых свежих записей блога, описание товаров в интернет магазинах и т.д. и т.п. Вариантов использования данного метода масса. Вот только как-то у самого ещё руки не дошли, реорганизовать структуру своего блога. Надеюсь, те кому приглянулся этот способ, будут порасторопнее меня и используют адаптивные боки в виде плиток на своих новых и уже работающих интернет-проектах.
Комментарии