С этим закончили, давайте вернемся к нашей одинокой маленькой ссылке Read More (
1,5 em
от его контекста, h1
.Рис. 2.7.
Размер нашего заголовка правильно выражен в гибких, масштабируемых единицахem
. (Но что за ерунда творится со ссылкой?)И вот здесь требуется внимание. Поскольку текст заголовка установлен равным 1,5 em
Поэтому, чтобы установить кегль ссылки в единицах em
11px
) не на 16
(значение, установленное в body
), а на 24
– кегль заголовка, наш новый контекст:11: 24 = 0,458333333333333
Мы получили какое-то совсем некрасивое число. Может быть, самое некрасивое, которые вы сегодня видели. (Но подождите, эта глава еще не окончена.)
Вам захочется округлить его до более-менее приемлемого числа – скажем, 0,46 em
0,458333333333333
, но именно это число идеально представляет желаемый кегль в пропорциональном отношении. К тому же браузеры мастерски владеют искусством округления лишних десятичных знаков, когда преобразовывают значения в пиксели. Поэтому нужно дать им больше, а не меньше, и в конце вас будет ожидать отличный результат.Теперь просто скопируйте это непритязательное число в CSS:
h1 a {
font: bold 0.458333333333333em Calibri, Optima,
Arial, sans-serif; /* 11px / 24px */
color:#747474;
letter-spacing: 0.15em;
text-transform: uppercase;
text-decoration: none;
}
Посмотрим на результат. Наша страничка закончена, она полностью соответствует желаемому дизайну, а текст задан в масштабируемых единицах em
Рис. 2.8.
С помощью простой математики мы создали более красивый дизайн – и без всяких пикселейОт гибких шрифтов к гибкой сетке
Вы, наверное, сейчас зеваете со скуки. Здесь ведь должна была быть глава про гибкие макеты, а этот тип Итан все талдычит про
Но когда я впервые делал гибкую сетку, я понятия не имел, с чего начинать. Поэтому, столкнувшись с неразрешимой проблемой, я сделал то, что у меня получается лучше всего: полностью ее проигнорировал и начал работать над тем, что знаю.
Когда я понял, как устанавливать размеры текста в единицах em
И в этом нам снова поможет наша формула target ÷ context = result
Создание гибкой сетки
Представьте, что дизайнер настолько впечатлен вашей быстрой и качественной работой над заголовком, что прислал вам другой макет, и теперь вам нужно написать код для блога сайта Robot or Not (рис. 2.9
).Рис. 2.9.
Новое задание – превращение эскиза в гибкий макетПлюс ко всему дизайнеру настолько понравилась работа, что он прислал краткую схему содержания страницы (рис. 2.10
), благодаря чему мы можем не тратить время на планирование. Нужно как-то его отблагодарить.Рис. 2.10.
Схема расположения элементов для нашего блогаМы можем быстро и ловко перевести его схему в базовую структуру верстки:
Recently in The Bot Blog
…
…
Наша разметка получилась простой и аккуратной, семантически верной и превосходно подходит для контента. Мы создали основной контейнер для всей страницы (#page
.
blog
. Внутрь него мы поместили еще два блока: один с классом .
main
для главного содержания статьи, а второй с классом .
other
для всего остального. Звучит, конечно, не слишком поэтично, но, с другой стороны, это и не сборник стихов.А теперь пропустим несколько этапов – как это делается на кулинарных шоу, где повар кладет в кастрюлю сырые продукты, а через минуту вынимает из духовки полностью готовую индейку. (Эта метафора прекрасно демонстрирует то, как часто я смотрю кулинарные шоу… или готовлю индейку.)