Приступаем к интересной теме - вертикальному ритму “Vertical Rhythm” в веб-дизайне и способе его создания с помощью библиотеки Compass.
Первое, с чего стоит начать, это небольшой вводный курс - что такое вертикальный ритм и для чего он нужен.
Ну, во-первых, в Интернете на момент написания статьи не так уж и много материалов по этой тематике; в немногочисленных материалах сущность вопроса преподносится как нечто очень сложное.
На самом деле это не так. Все мы когда-то учились в школе и наверное, помним тетрадки в линейку по русскому языку, в которых строгие учительницы заставляли нас писать:
Так вот - сами не зная об этом, мы уже тогда использовали вертикальный ритм (Vertical Rhythm) на практике! Слово вертикальный ритм говорит само за себя - текст или контент на странице должен размещаться в определенном ритме, по определенному правилу; а не хаотично.
В данном случае все строки на такой странице должны размещаться по нарисованным линейкам - это и есть суть пресловутого Vertical Rhythm.
В типографике вертикальный ритм применяется с незапамятных времен; и только с недавних пор о вертикальном ритме заговорили применительно к веб-дизайну. Использование вертикального ритма в веб-дизайне подразумевает применение CSS-свойств, управляющих вертикальными параметрами элементов страницы: размером шрифта (
), высотой строки(1
font-size
), отступами (1
line-height
и 1
padding
), границами (1
margin
).1
border
Основная цель вертикального ритма - сделать текст (контент - в общем случае) максимально читабельным. То есть, это когда посетитель заходит на страницу, читает что-либо на ней, и сам процесс не доставляет ему никаких неудобств. Напротив - ему приятно читать такой текст.
В библиотеке Compass имеется модуль “Vertical Rhythm”, задача которого - максимально упростить создание и настройку вертикального ритма в проекте. Модуль Vertical Rhythm в Compass - это набор функций и миксинов, облегчающих вычисление высоты строк, вертикального
и 1
padding
, толщины границ (1
margin
).1
border
Вычисления основаны на базовой высоте строки
и базовом размере шрифта 1
line-height
с целью создания горизонтальной сетки. Давайте приступим к практике; то, что я не смог рассказать своими словами, думаю, будет наглядно показано на живых примерах.1
font-size
Первое, что необходимо сделать - это установить (если еще не установлена) Compass версии
. Почему именно эту версию? В ней есть множество возможностей, которые отсутствуют в старой версии.1
1.0.0 alpha 19
Установка Compass этой версии под Windows 7 на момент написания статьи является достаточно непростой задачей, поэтому рекомендую обратиться к статье “Медиа-запросы Breakpoint в Sass”.
Создаем и настраиваем проект в Compass
Создаем новый проект в командной строке с помощью Compass:
Ключ
используется здесь, чтобы создать “голый” экземпляр проекта под Sass/Compass, без лишних файлов 1
--bare
, 1
print.scss
и так далее.1
ie.scss
Производим неодходимые настройки в файле
, а также создаем файлы 1
config.rb
, 1
sass/style.scss
, 1
css/style.css
.1
index.html
HTML-файл наполним структурой вида:
То есть, для чистоты эксперимента, создаем заголовки с первого по шестой уровень, несколько параграфов и два изображения. В процессе работы с модулем вертикального ритма будем пользоваться официальной документацией по адресу - Vertical Rhythm.
В файле
подключаем сброс стилей Compass и модуль вертикального ритма:1
style.scss
Сделаем небольшую стилизацию для блока
, заголовков, параграфов и изображений, чтобы визуально было проще разобраться, что к чему:1
.wrapper
Основные переменные в Vertical Rhythm
В модуле “Vertical Rhythm” библиотеки Compass имеется множество переменных, но среди них есть только две основные, которые необходимы для расчетов внутри этого модуля:
Значение переменной
(как правило) равно выражению 1
$base-line-height
, поэтому 1
$base-font-size * 1.5
. Значение переменной 1
22px * 1.5 = 33px
в 1
$base-font-size
взято в качестве примера.1
22px
Помимо этого, есть еще две дополнительные переменные:
Включаем Vertical Rhythm
После ввода четырех вышеперечисленных переменных осталось только инициализировать модуль Vertical Rhythm” с помощью миксина:
Миксин
делает простые вещи - он устанавливает 1
establish-baseline
и 1
font-size
для корневого тега 1
line-height
. Но делает он это с помощью относительных единиц измерения.1
<html>
Допустим, в своем проекте мы установили размер шрифта
и высоту строки 1
22px
. Если взглянуть на результат компиляции из SCSS в CSS, то увидим следующее:1
33px
Размер шрифта
является установленным по умолчанию в большинстве браузеров, поэтому 1
16px
. Следовательно, 1
16px = 100%
.1
22px = 137.5%
Относительная величина
всегда относительна к размеру шрифта 1
line-height
текущего элемента, поэтому в данном случае она равна 1.5em (1
font-size
).1
22px * 1.5 = 33px
Перезагрузим браузер с открытой страницей создаваемого проекта-примера и увидим, как резко изменилась картина! Вместо слепленных друг с другом строчек появилась более четкая и удобочитаемая структура. Видно, что каждая строка текста располагается внутри своей линии.
Чтобы еще более наглядно представить картину структурированного контента, воспользуемся миксином:
Обрисовались строки, ну прямо как на школьном тетрадном листке! Хорошо видно, как все строки текста и изображение выстроились четко по линеечкам. Думаю, если читатель дошел до этого места, то ему стала понятна суть и принцип вертикального ритма без каких-либо объяснений!
Margin и padding в Vertical Rhythm
Но строки, заголовки и изображения все равно тесно прижаты друг к другу. В модуле Vertical Rhythm имеются свои собственные инструменты для создания отступов у элементов контента, в основе которых лежит опять таки базовый размер шрифта (вот он - тот самый ритм!):
Для элемента страницы можно задать
или 1
margin-top
, 1
padding-top
или 1
margin-bottom
. Реализуется это с помощью специальных миксинов (на выбор, один из четырех):1
padding-bottom
Имеются универсальные миксины, которые являются сокращениями от вышеперечисленных. Таким миксинам передаются необходимые аргументы и на выходе получаем результат:
Одновременно задать
или 1
margin-top + margin-bottom
можно с помощью миксинов:1
padding-top + padding-bottom
Миксин
является глобальным сокращением вышеназванных миксинов для создания отступов 1
@include rhythm
или 1
margin
.1
padding
Создание границ в Vertical Rhythm
Отступы можно совмещать с границами
. То есть, можно (к примеру) создать верхний 1
border
с верхней границей 1
padding
.1
border
Толщина границы и ее стиль управляются через переменные
и 1
$default-rhythm-border-width
. По умолчанию толщина границы равна 1
$default-rhythm-border-style
, а ее стиль - 1
1px
.1
solid
Одновременно задать
и 1
padding
для всех четырех сторон можно через миксин:1
border
Указать границу и отступ для какой-то одной стороны можно с помощью миксина:
Произвольный размер шрифта в Vertical Rhythm
Можно произвольно поменять размер шрифта любого элемента страницы, но делать это также нужно, исходя из ритма - с помощью соответствующего миксина
.1
adjust-fonts-size-to
Давайте изменим размер заголовков таким образом, чтобы они отличались от основного текста (и были действительно заголовками):
Или же, допустим, нужно установить для заголовка первого уровня
размер шрифта в 1
h1
. Микcин будет выглядеть таким образом:1
42px
Первым делом, этот миксин делает размер шрифта элемента
относительным к размеру шрифта элемента-контейнера. В нашем случае таковым является элемент 1
h1
, поэтому размер шрифта равен 1
html
. Соответственно, размер шрифта для 1
22px
получается (1
h1
):1
42 / 22 = 1.90909
Вторым делом миксин заново вычисляет высоту строки для нашего заголовка
. Делает он это таким образом:1
h1
Конечный результат показан ниже:
Отлично, правда? Вся прелесть в том, что показанные выше расчеты можно с легкостью забыть - модуль “Vertical Rhythm” каждый раз будет вычислять размер шрифта и высоту строки сам, не “напрягая” нас.
Помимо указания размера шрифта в качестве аргумента, миксину
можно также передать количество линий, которое должен занимать заголовок. Например, так:1
adjust-fonts-size-to
Если вы попробуете у себя, то сразу увидите результат.
Выравнивание изображений в Vertical Rhythm
Внимательный читатель должен заметить одну неточность, если он у себя повторил все шаги, описанные выше. Неточность заключается в том, что изображение не вписывается в вертикальный ритм, созданный нами на странице:
А именно - первое изображение своим верхним краем совпадает с линией ритма. А вот нижняя граница не попадает на линию. Из-за этого весь дальнейший контент также смещается и вертикальный ритм нарушается.
Происходит это потому, что изображение мы сделали блочным элементом и присвоили ему фиксированные размеры в пикселях в HTML-коде:
Исправить ситуацию можно с помощью плагина “Keep The Rhythm” под jQuery - Keep The Rhythm. Вдаваться в подробности работы этого плагина я не буду, а сразу покажу, как он подключается и результат его работы.
Получаем с GitHub библиотеку jQuery и сам плагин к ней:
Подключаем к HTML-странице в ее конце. И затем создаем небольшой скрипт. Смотрим результат:
Все получилось! Однако, стоит заметить, что приведенный выше пример является упрощенным. Достаточно изменить масштаб страницы в окне браузера, и вертикальный ритм поломается.
Поэтому плагин “Keep The Rhythm” необходимо применять в связке с медиа-запросами для правильной его работы. По крайней мере, если возникнет вопрос по работе этого плагина, то документация на официальной странице всегда под рукой.
Заключение
Основой для написания этой статьи послужили два материала (видео и статья):