Причина, по которой я задал этот вопрос, заключалась в том, что я забыл, как использовать em'ы, поскольку какое-то время я радостно взламывал CSS. Люди не заметили, что я держал вопрос в общих чертах, поскольку я не говорил о подборе шрифтов как таковых. Меня больше интересовало, как определить стили для любого данного элемента блока на странице.
Как и Хенрик Пол и другие отметили, что em пропорционально размеру шрифта, используемого в элементе. Распространенной практикой является определение размеров элементов блока в px, однако выбор шрифтов в браузерах обычно нарушает этот дизайн. Изменение размера шрифтов обычно выполняется с помощью сочетаний клавиш Ctrl + + или Ctrl + - . Поэтому хорошей практикой является использование вместо них.
Использование px для определения ширины
Вот иллюстрирующий пример. Скажем, у нас есть тег div, который мы хотим превратить в стильное поле для дат, у нас может быть HTML-код, который выглядит следующим образом:
<div class="date-box">
<p class="month">July</p>
<p class="day">4</p>
</div>
Простая реализация будет определять ширину класса date-box
в пикселях:
* { margin: 0; padding: 0; }
p.month { font-size: 10pt; }
p.day { font-size: 24pt; font-weight: bold; }
div.date-box {
background-color: #DD2222;
font-family: Arial, sans-serif;
color: white;
width: 50px;
}
Проблема
Однако, если мы хотим увеличить размер текста в нашем браузере, дизайн будет нарушен. Текст будет также выделяться за пределами рамки, что почти совпадает с дизайном SO, как указывает flodin . Это связано с тем, что поле будет иметь такой же размер по ширине, как и для 50px
.
Использование em вместо
Более разумный способ - вместо этого определить ширину в ems:
div.date-box {
background-color: #DD2222;
font-family: Arial, sans-serif;
color: white;
width: 2.5em;
}
* { margin: 0; padding: 0; font-size: 10pt; }
// Initial width of date-box = 10 pt x 2.5 em = 25 pt
// Will also work if you used px instead of pt
Таким образом, у вас будет плавный дизайн для блока даты, то есть размер блока будет увеличен вместе с текстом пропорционально размеру шрифта, определенному для блока даты. В этом примере размер шрифта определен в *
как 10pt и увеличится в 2,5 раза до этого размера шрифта. Поэтому, когда вы изменяете размер шрифта в браузере, размер окна будет в 2,5 раза больше размера шрифта.