Из оригинал-макета мы знаем, что ширина нашего блога должна составлять 900px
.blog
. Поскольку блок .blog
вложен в элемент #page
, ширина которого в соответствии с оригинал-макетом составляет 960
пикселей, это и есть наш контекст.Давайте разделим ширину .blog
900
) на его контекст (960
):900 / 960 = 0,9375
У нас получилось 0,9375. Число выглядит не особенно впечатляюще. Но, передвинув запятую на два знака, мы получаем 93,75 %
.blog {
margin: 0 auto 53px;
width: 93,75 %; /* 900px / 960px */
}
(Так же как и в случае с размерами шрифтов, я записал формулу в поле комментария справа от значения ширины (width
Итак, с двумя элементами мы разобрались. Но что делать с колонками?
.blog.main {
float: left;
width: 566px;
}
.blog.other {
float: right;
width: 331px;
}
Ширина основной колонки, которая расположена слева, составляет 566px
331px
. Эти цифры нам тоже придется перевести в проценты. Но прежде чем подставить их в формулу, обратите внимание на то, что контекст изменился. Последний раз мы делили ширину модуля .blog
на 960
, ширину его контейнера (#page
). Но поскольку эти блоки вложены в .blog
, нам нужно делить целевую ширину колонок (566
и 331
) на ширину их нового контекста, то есть ширину .blog
(900
). В результате мы получаем:566 / 900 = 0,628888889
331 / 900 = 0,367777778
Передвинув запятую на два знака, мы получаем в итоге 62,8888889 %
.
main
и 36,7777778 %
для блока .other
:.blog.main {
float: left;
width: 62.8888889 %; /* 566px / 900px */
}
.blog.other {
float: right;
width: 36.7777778 %; /* 331px / 900px */
}
Вот мы и получили гибкий макет (рис. 2.17
). При помощи небольших расчетов мы создали контейнер, выраженный в процентах, и две гибкие колонки, что дает нам макет, меняющий свои размеры в соответствии с размерами окна браузера. При этом ширина в пикселях тоже меняется, аРис. 2.17.
Наша гибкая сетка готоваГибкие поля и отступы
Теперь, когда две колонки стоят на своих местах, можно сказать, что мы закончили с основными компонентами нашей гибкой сетки. Изумительно. Замечательно. Великолепно. И все же этого недостаточно: нас ждет работа над деталями.
Не продохнуть…
Наш дизайн уже достаточно гибок, однако он требует серьезного внимания к двум основным деталям. Название блога уехало далеко влево (рис. 2.18
), а две колонки примыкают друг к другу без каких-либо отступов или промежутков (рис. 2.19). Определенно, нам нужно еще поработать.(Конечно, на самом деле мы без них страдаем.)
Рис. 2.18.
Наш заголовок отчаянно нуждается в поляхРис. 2.19.
Отступы? Мы не признаем никаких отступов!Рис. 2.20.
Согласно параметрам эскиза, нам нужно задать горизонтальное поле в 48 пикселей с левой стороны заголовкаНу что ж, давайте начнем с заголовка. В оригинальном макете между началом заголовка и левым краем контейнера есть промежуток в 48 пикселей (рис. 2.20
). Мы, конечно,padding-left
) в пикселях или em
:.lede {
padding: 0.8em 48px;
}
Это хорошее решение. Но это фиксированное значение левого поля (padding-left
48px
), независимо от того, насколько уменьшился или увеличился весь макет.Так что мы не пойдем этим путем – мы создадим
target ÷ context = result
Прежде чем мы снова займемся вычислениями, хочу обратить ваше внимание на то, что контексты для гибких полей и для гибких отступов немного отличаются.
1. Задавая гибкие отступы
для элемента, принимайте за контекст ширину контейнера элемента.