Изменяемые размеры шрифтов
16 Oct, 2006Разумеется я имею ввиду изменяемые в ИЕ(6-) шрифты, поскольку во всех остальных броузерах они и так легко изменяемы. Задавать шрифты в пикселах - нехорошо по отношению к юзерам. Можно и нужно задавать их в других относительных единицах. Тут я расскажу скорее не о каком то оригинальнои приеме, а просто об общем подходе для создания страничек с резиновыми шрифтами для ИЕ.
Заметка(запоздалая) вызвана двумя постами на pepelsbey.net и mauzon.com и желанием поделиться своим простым подходом, вдруг кому то поможет.
Возможности
Задавать шрифты можно в пикселах(если бы не ИЕ так и нужно было бы делать всем), поскольку это все же не абсолютная единица как многие любят говорить - а относительная(от точек экрана зависит), так же можно использовать ЕМ'ы, проценты и ключевые слова. Ключевые слова немного глючат в IE - их значение там сдвинуто, хотя при желании можно использовать и их(с хаками). Пикселы для текста это табу - по причине существования ИЕ - там пользователь не сможет изменять размеры шрифта заданного пикселами. Остаются проценты и ЕМ. Они очень похожи. Потому их можно использовать смешанно - что Вам больше нравится. Далее я расскажу как с помощью ЕМ добиться точных нужных пиксельных размеров.С чего начать
В своем темплейте я как правило сразу задаю размер шрифта для body, вот так:- body{
- font: 62.5%/1.4 Arial, sans-serif
- }
- <div id="header"></div>
- <div id="content"></div>
- #header{font-size:1.1em}
- #content{font-size:1.3em}
Подводные камни
После тех 62.5% весь текст на страничке должен быть якобы размером 10пикселов, но для заголовков и инпут полей это не сработает, не стоит удивляться, нужно отдельно задавать размеры что бы они подействовали:- input,select{font-size:1.1em}
- h1,h2,h3,h4{font-size:2em}
Во вторых если у вас есть сложные многоуровневые конструкции, к примеру вложенный список:
- <ul id="nav">
- <li>
- <ul>
- <li>...</li>
- </ul>
- </li>
- </ul>
- #nav li{font-size:1.1em}
Потому для вложенного списка нужно задавать 1.1/1.1~1em (желаемый размер в емах нужно делить на тот который сейчас получился из-за наследования, для 10 пикселов надо было 1.0/1.1=0.91) Тогда после дописания
- #nav li li{font-size:.1em} /* 1em для 11px, либо 0.91em для 10px */
Об em нужно думать как о процентах 1.1=110%, 1=100%, в принципе в любом месте кода теперь font-size:110%
и font-size:1.1em
- будут абсолютно эквивалентны. И нужно помнить что проценты умножаются
Существуют так же способы в которых для body используется 100%(16px) или 76%(0.76*16~=12) - но в моем способе рассчеты размеров наиболее просты и глюков в нем я пока не заметил, потому остаюсь при своих. Если вы знаете какой либо глюк в нем буду рад услышать и проапдейтить пост.
Как перейти с пикселов на ЕМы
Таким образом если вы все еще используете пикселы вместо ЕМов, просто вставляете размер в процентах для body, а затем последовательно заменяете все 11px на 1.1em, 12px на 1.2em, 9px на 0.9em и так далее, но с учетом подводных камней описанных выше - избегайте более чем двухразового наследования. Иначе потом становится трудно считать размеры шрифта вложенных элементов. Вдобавок при увеличении шрифта в броузерах размеры могут начать расти заметно быстрее чем хотелось бы.В конце
Надеюсь кому то это поможет избавиться от атавизма в виде пиксельных шрифтов :). Хотя если бы не ИЕ то они были бы единственно правильным способом задавания шрифтов, ИМХО. Работает во всех современных броузерах, для 5го ИЕ требуется немного лишнего кода(см. ссылки внизу), после которого и он работает корректно. Никаких глюков с данным способом указания шрифтов мною пока не было замечено. Ссылки по теме:- How to size text using ems - эта заметка помогла мне забыть про пикселы
- Легкое изменение техники для корректной работы в IE5/Win
- Text sizing - тесты множества способов задавания размеров шрифта
- Последние споры в рунете: pepelsbey & mauzon
- Пример использования в моей верстке - далек от совершенства, но шрифты сделаны именно так как в посте.
Если вы знаете другие способы или какие то уточнения и апгрейды(глюки) к этому методу буду рад услышать!
Учиться никогда не поздно.
39 комментариев к “Изменяемые размеры шрифтов”