CSS свойство font-weight устанавливает начертание шрифта. Некоторые шрифты доступны только в нормальном или полужирном начертании.
Интерактивный пример
Синтаксис
font-weight: normal;
font-weight: bold;
/* Relative to the parent */
font-weight: lighter;
font-weight: bolder;
font-weight: 100;
font-weight: 200;
font-weight: 300;
font-weight: 400;
font-weight: 500;
font-weight: 600;
font-weight: 700;
font-weight: 800;
font-weight: 900;
/* Global values */
font-weight: inherit;
font-weight: initial;
font-weight: unset;
Значения
normal-
Нормальное начертание. То же, что и
400. bold-
Полужирное начертание. То же, что и
700. lighter-
Изменяет начертание относительно насыщенности родительского элемента (сверхтонкое начертание).
bolder-
Изменяет начертание относительно насыщенности родителя элемента (сверхжирное начертание).
100,200,300,400,500,600,700,800,900-
Цифровые значения насыщенности шрифтов, которые позволяют задавать больше, чем нормальное и полужирное начертание.
Недоступность заданного значения
Если заданное цифровое значение насыщенности недоступно, для определения толщины отображаемого шрифта используется следующий алгоритм:
- Если задано значение выше
500, будет использовано первое доступное более жирное начертание (если такого не окажется, то первое доступное более светлое). - Если задано значение менее
400, будет использовано первое доступное более светлое начертание (если такого не окажется, то первое доступное более жирное). - Если задано значение
400, будет применено500. Если500недоступно, то будет использован алгоритм для подбора значений менее400. - Если задано значение
500, будет применено400. Если400недоступно, то будет использован алгоритм для подбора значений менее400.
Это означает, что для шрифтов, которые предоставляют только normal и bold начертания, 100-500 normal, и 600-900 bold.
Значение относительных весов
Когда используется жирнее или светлее, следующая таблица используется для вычисления абсолютного веса элемента:
| наследуемое значение | жирнее |
светлее |
|---|---|---|
| 100 | 400 | 100 |
| 200 | 400 | 100 |
| 300 | 400 | 100 |
| 400 | 700 | 100 |
| 500 | 700 | 100 |
| 600 | 900 | 400 |
| 700 | 900 | 400 |
| 800 | 900 | 700 |
| 900 | 900 | 700 |
Определение веса имени
Значения от 100 до 900, примерно, соответствуют следующим распространённым именам насыщенности:
| Значение | Общее название |
|---|---|
100 |
Тонкий (Волосяной) Thin (Hairline) |
200 |
Дополнительный светлый (Сверхсветлый) Extra Light (Ultra Light) |
300 |
Светлый Light |
400 |
Нормальный Normal |
500 |
Средний Medium |
600 |
Полужирный Semi Bold (Demi Bold) |
700 |
Жирный Bold |
800 |
Дополнительный жирный (Сверхжирный) Extra Bold (Ultra Bold) |
900 |
Чёрный (Густой) Black (Heavy) |
Интерполяция
Значения font-weight интерполируются с помощью дискретных шагов (кратные 100). Интерполяция происходит в действительном пространстве чисел и превращается в целое число путём округления до ближайшего числа, кратного 100, со значениями посредине между кратными 100 округлёнными в сторону положительной бесконечности.
Формальный синтаксис
font-weight =
<font-weight-absolute> | (en-US)
bolder | (en-US)
lighter<font-weight-absolute> =
normal | (en-US)
bold | (en-US)
<number [1,1000]>
Примеры
HTML
<p>
Alice was beginning to get very tired of sitting by her sister on the
bank, and of having nothing to do: once or twice she had peeped into the
book her sister was reading, but it had no pictures or conversations in
it, 'and what is the use of a book,' thought Alice 'without pictures or
conversations?'
</p>
<div>I'm heavy<br/>
<span>I'm lighter</span>
</div>
CSS
/* Назначение тексту элемента <p> жирного начертания. */
p {
font-weight: bold;
}
/* Назначение тексту элемента <div> жирности, которая больше на два уровня,
чем normal, но все ещё меньше, чем стандартный bold. */
div {
font-weight: 600;
}
/* Назначение тексту элемента <span> жирности,
которая на один уровень меньше, чем у его родителя. */
span {
font-weight: lighter;
}
Result
Спецификации
| Specification |
|---|
| CSS Fonts Module Level 4 # font-weight-prop |
| Начальное значение | normal |
|---|---|
| Применяется к | все элементы. Это также применяется к ::first-letter и ::first-line. |
| Наследуется | да |
| Обработка значения | ключевое слово или числовое значение, с bolder и lighter, трансформируемися в действительное значение |
| Animation type | жирность шрифта |
Совместимость браузеров
BCD tables only load in the browser
В прошлой теме мы рассмотрели установку шрифтов для текста. В этой теме мы рассмотрим, как изменить
размер текста в CSS, сделать текст жирным и установить другие свойства текстовых элементов.
Стиль, вариант, ширина и размер текста
Для установки размера текста используется свойство font-size. Размер указывается
в любых доступных в CSS единицах.
Также этому свойству можно установить значения с помощью специальных слов. Таких значений достаточно
много, вы можете найти их в справочниках. Использовать их неудобно,
обычных единиц измерения CSS вполне достаточно. Для примера создадим абзац и установим для него размер
текста:
Стиль:
+
|
7 |
#fo
{
font-size: 30px;
}
|
HTML код:
Стиль шрифта позваляет выделить текст курсивом. Для установки стиля шрифта используется свойство
font-style. Оно может принимать следующие значения:
font-style: normal — обычный шрифт (по умолчанию)
font-style: italic — курсивный шрифт
font-style: oblique — наклонный шрифт
font-style: inherit — значение принимается от родительского элемента
У одних шрифтов стиль italic и oblique выглядит
одинаково, у других шрифтов по-разному.
Установим созданному абзацу стиль шрифта. Для этого добавим селектору #fo свойство
font-style:
Есть вариант отображения текста, при котором прописные буквы выглядят как заглавные, только уменьшенного
размера. Для этого используется свойство font-variant. Оно принимает следующие
значения:
font-variant: normal — нормальный шрифт (по умолчанию)
font-variant: small-caps — прописные буквы выглядят как заглавные
font-variant: inherit — значение принимается от родительского элемента
Добавим селектору #fo свойство font-variant:
|
11 |
font-variant: small-caps; |
Если увеличить ширину шрифта, то можно сделать жирный текст. В CSS Это делается с помощью свойства
font-weight. Оно принимает такие значения:
font-weight: normal — обычный текст
font-weight: bold — жирный текст
font-weight: inherit — принимает значение от родительского элемента
Кроме того, ширину шрифта можно указать с помощью чисел от 100 до 900. Число 400 соответствует значению
normal, а число 700 значению bold. Но числа работают
не со всеми шрифтами и не во всех браузерах. Поэтому они редко используются.
Добавим селектору #fo свойство font-weight:
Существует совойство font, в котором можно указать
все перечисленные свойства,
а также шрифт. Значения свойств перечисляются через пробел в таком порядке:
- стиль
- вариант
- ширина
- размер
- шрифт
Добавим на страницу тэг <span> и установим для
него свойство font:
Стиль:
|
14 |
#s1
{
font: italic small-caps bold 30px Arial;
}
|
HTML код:
|
22 |
<span id="s1">Текст</span> |
Если какое-то из свойств не указано, то используется значение по умолчанию. Но размер и
шрифт нужно указывать обязательно. При указании шрифта, так же, как и для свойства
font-family, можно перечислить несколько шрифтов через запятую. Добавим на страницу
ещё один тег <span> и установим ему свойство font,
но по-другому:
Стиль:
|
18 |
#s2
{
font: 20px Tahoma, Verdana, sans-serif;
}
|
HTML код:
|
27 |
<span id="s2">Текст</span> |
Цвет текста
Цвет текста устанавливается с помощью свойства color. Значением этого свойства
является цвет, указанный одним из способов,
предусмотренных в CSS.
Установим цвет тэгу
<span>, который мы создавали ранее. Добавим селектору #s2 свойство
color:
Высота строки
Межстрочный интервал — это расстояние между строками текста. Для его установки используется свойство
line-height. Оно устанавлявает высоту строки. Высота строки состоит из размера
шрифта и межстрочного интервала. Если высота строки равна 50 пикселей, а размер шрифта 30 пикселей,
то межстрочный интервал получится 20 пикселей. Если высоту строки установить меньше размера шрифта, то
строки будут пересекаться. Свойство line-height может принимать такие значения:
line-height: normal — обычный интервал (по умолчанию)
line-height: число, на которое будет умножен размер шрифта
line-height: высота в единицах измерения,
доступных в CSS
line-height: проценты от размера шрифта
line-height: inherit значение принимается от родительского элемента
Для примера создадим большой абзац текста, состоящий из нескольких строк. Установим ему размер шрифта
и высоту строки:
Стиль:
|
7 |
#text
{
font-size: 20px;
line-height: 30px;
}
|
HTML код:
|
34 |
<p id="text">Текст из нескольких строк Текст из нескольких строк Текст из нескольких строк Текст из нескольких строк Текст из нескольких строк Текст из нескольких строк Текст из нескольких строк Текст из нескольких строк Текст из нескольких строк Текст из нескольких строк Текст из нескольких строк Текст из нескольких строк </p> |
Попробуйте разные варианты высоты строки. Посмотрите как будет выглядеть текст.
Отступ первой строки
В абзацах часто делается отступ первой строки. В русском языке он называется Красная строка. Для
установки этого отступа есть свойство text-indent.
Значение указывают
в единицах измерения CSS.
Установим отступ большому абзацу. Селектору #text добавим свойство
text-indent:
Выравнивание текста
Выравнивание текста устанавливается с помощью свойства text-align. Оно принимает
следующие значения:
text-align: left — по левому краю (по умолчанию)
text-align: right — по правому краю
text-align: center — по центру
text-align: justify — по ширине. Используется для текстов длинной более
одной строки.
Учитывайте, что выравнивается не сам
элемент. Он остаётся на прежнем месте. Выравнивается текст внутри элемента.
Добавим на страницу абзац и выравнем текст в нём по центру.
|
40 |
<p style="text-align: center">Выравнивание по центру</p> |
Декорирование текста
Декорирование — это оформление текста определённым образом. Оно устанавливается с помощью свойства
text-decoration. Оно принимает такие значения:
text-decoration: none — без декорирования
text-decoration: underline — подчёркнутый текст
text-decoration: overline — надчёркнутый текст
text-decoration: line-through — зачёркнутый текст
text-decoration: inherit — значение принимается от родительского элемента
Для примера создадим абзац с подчёркнутым текстом:
|
41 |
<p style="text-decoration: underline">Подчёркнутый текст</p> |
Сделать текст насыщенным можно как в разметке, так и в стилях. Рассмотрим, как изменить насыщенность текста с помощью CSS, и узнаем, в чём плюсы этого метода.
Как выделить текст в CSS
Определите, какой участок текста необходимо выделить и используйте CSS-свойство font-weight, которое отвечает за толщину шрифта.
Часто встречающиеся значения:
400илиnormal— обычный шрифт, значение по умолчанию;700илиbold— полужирный шрифт.
Например:
<p class="boldtext">Красота текста — это не только хороший дизайн
и качественный контент, но и правильная вёрстка текста,
и единообразие. Под единообразием мы имеем в виду, что редакция выработала общее представление о строчной вёрстке текста
и придерживается его.</p>
.boldtext {
font-weight: 700;
}
👉 Красота текста — это не только хороший дизайн и качественный контент, но и правильная вёрстка текста, и единообразие.
Под единообразием мы имеем в виду, что редакция выработала общее представление о строчной вёрстке текста и придерживается его.
Весь текст, размеченный классом boldtext, станет жирным.
Свойство font-weight может принимать одно из девяти числовых вариантов насыщенности:
- 100: Thin;
- 200: Extra Light (Ultra Light);
- 300: Light;
- 400: Normal;
- 500: Medium;
- 600: Semi Bold (Demi Bold);
- 700: Bold;
- 800: Extra Bold (Ultra Bold);
- 900: Black (Heavy).
Все эти числовые значения задают степень толщины шрифта от самого тонкого до самого толстого.
Но в большинстве системных шрифтов есть только два варианта толщины: обычный normal (400) и полужирный bold (700). Поэтому остальные значения свойства используются реже.
Кроме числовых значений, у font-weight есть ещё два относительных значения: bolder и lighter. Они делают шрифт жирнее и тоньше, чем текущее или унаследованное значение.
Выделение отдельных предложений и слов
Чтобы выделить отдельные фразы или слова жирным шрифтом, нужные участки текста разметьте отдельными тегами с использованием классов. Например:
<p>Как и многие языки программирования, медиавыражения
<span class="bold">поддерживают логические операторы</span>, поэтому мы можем комбинировать выражения.</p>
И затем в стилях пропишите:
.bold {
font-weight: 700;
}
Теперь все слова, обёрнутые в тег span с классом bold, станут жирными.
👉 Как и многие языки программирования, медиавыражения поддерживают логические операторы, поэтому мы можем комбинировать выражения
Эффективно и доступно
Что, если весь жирный текст сразу разметить в файле HTML? Для этого же есть специальные теги <strong> и <b>.
Теги <b> и <strong> используют в особых случаях, при этом важно знать несколько моментов:
- Тег
<b>предназначен для выделения текста с целью привлечения к нему внимания, но без придания ему особой важности. Использовать его нужно только в случае, когда остальные теги выделения не подходят. - Тег
<strong>указывает на важность отмеченного текста и используется для выделения предупреждений или части документа, которую пользователь должен увидеть раньше остального.
В каких случаях предпочтительно использовать свойство font-weight:
- Для совместной работы над проектом. Если кто-то из команды захочет изменить стиль текста, ему не придётся искать и изменять каждый элемент HTML. Нужно будет просто изменить стили шрифтов в CSS.
- Для обеспечения доступности. Скринридер при чтении сайта учитывает насыщенность шрифта. Скринридер выделяет слова с тегом
<strong>интонационно, в отличие от простого выделения с помощью<b>. Если чтение с интонацией не нужно, а важно лишь расставить визуальные акценты в тексте, то лучше использовать свойствоfont-weight.
Ещё по теме
- Как подключить и оптимизировать нестандартные шрифты
- Как убрать подчёркивание ссылок
- Как сделать список без точек в HTML
| Internet Explorer | Chrome | Opera | Safari | Firefox | Android | iOS |
| 6.0+ | 1.0+ | 3.5+ | 1.0+ | 1.0+ | 1.0+ | 1.0+ |
Краткая информация
| Значение по умолчанию | normal |
|---|---|
| Наследуется | Да |
| Применяется | Ко всем элементам |
| Ссылка на спецификацию | http://www.w3.org/TR/CSS21/fonts.html#propdef-font-weight |
Версии CSS
| CSS 1 | CSS 2 | CSS 2.1 | CSS 3 |
|---|---|---|---|
Описание
Устанавливает насыщенность шрифта. Значение устанавливается от 100 до 900
с шагом 100. Сверхсветлое начертание, которое может отобразить браузер, имеет
значение 100, а сверхжирное — 900. Нормальное начертание шрифта (которое
установлено по умолчанию) эквивалентно 400, стандартный полужирный текст —
значению 700.
Синтаксис
font-weight: bold|bolder|lighter|normal|100|200|300|400|500|600|700|800|900
Значения
Насыщенность шрифта задаётся с помощью ключевых слов: bold — полужирное начертание, normal — нормальное начертание. Также допустимо использовать условные единицы от 100 до 900. Значения bolder и lighter изменяют жирность относительно насыщенности родителя, соответственно, в большую и меньшую сторону.
Пример
HTML5CSS2.1IECrOpSaFx
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>font-weight</title>
<style>
h1 {
font-weight: normal; /* Нормальное начертание */
}
.select {
color: maroon; /* Цвет текста */
font-weight: 600; /* Жирное начертание */
}
</style>
</head>
<body>
<h1>Duis te feugifacilisi</h1>
<p><span class="select">Lorem ipsum dolor sit amet</span>,
consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet
dolore magna aliguam erat volutpat. Ut wisis enim ad minim veniam, quis nostrud
exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo
consequat.</p>
</body>
</html>
Результат данного примера показан на рис. 1.
Рис. 1. Применение свойства font-weight
Объектная модель
[window.]document.getElementById(«elementID«).style.fontWeight
Браузеры
Браузеры обычно не могут адекватно показать требуемую насыщенность шрифта, поэтому переключаются между значениями bold, normal и lighter. На практике же начертание в браузерах обычно ограничено всего двумя вариантами: нормальное начертание и жирное начертание.
Устанавливает насыщенность шрифта. Значение указывается в виде чисел от 100 до 900 с шагом 100 или с помощью заданных ключевых слов.
Краткая информация
| Значение по умолчанию | normal |
|---|---|
| Наследуется | Да |
| Применяется | Ко всем элементам |
| Анимируется | Да |
Синтаксис
font-weight: bold|bolder|lighter|normal|100|200|300|400|500|600|700|800|900
Синтаксис
| Описание | Пример | |
|---|---|---|
| <тип> | Указывает тип значения. | <размер> |
| A && B | Значения должны выводиться в указанном порядке. | <размер> && <цвет> |
| A | B | Указывает, что надо выбрать только одно значение из предложенных (A или B). | normal | small-caps |
| A || B | Каждое значение может использоваться самостоятельно или совместно с другими в произвольном порядке. | width || count |
| [ ] | Группирует значения. | [ crop || cross ] |
| * | Повторять ноль или больше раз. | [,<время>]* |
| + | Повторять один или больше раз. | <число>+ |
| ? | Указанный тип, слово или группа не является обязательным. | inset? |
| {A, B} | Повторять не менее A, но не более B раз. | <радиус>{1,4} |
| # | Повторять один или больше раз через запятую. | <время># |
Значения
Насыщенность шрифта задаётся с помощью ключевых слов: bold — жирное начертание и normal — нормальное начертание. Также допустимо использовать условные единицы от 100 до 900. Значения bolder и lighter изменяют жирность относительно насыщенности родителя, соответственно, в большую и меньшую сторону.
Вот как числовые значения влияют на насыщенность шрифта.
- 100 — тонкое начертание;
- 200 — сверхсветлое;
- 300 — светлое;
- 400 — нормальное (аналогично normal);
- 500 — среднее;
- 600 — полужирное;
- 700 — жирное (аналогично bold);
- 800 — сверхжирное;
- 900 — тяжёлое.
Учтите, что не все шрифты поддерживают этот набор. Если указанное значение не поддерживается, то браузер приведёт шрифт к ближайшей насыщенности. К примеру, если вы указали 900 и оно не может быть показано, то браузер в действительности применит значение 700 как ближайшее, которое работает корректно.
Песочница
Винни-Пух был всегда не прочь немного подкрепиться, в особенности часов в одиннадцать утра, потому что в это время завтрак уже давно окончился, а обед ещё и не думал начинаться. И, конечно, он страшно обрадовался, увидев, что Кролик достаёт чашки и тарелки.
100300400500700900
@import url(https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900);
div {
font-family: Roboto, sans-serif;
font-weight: {{ playgroundValue }};
}
Пример
<!DOCTYPE html>
<html>
<head>
<meta charset=»utf-8″>
<title>font-weight</title>
<style>
h1 {
font-weight: normal; /* Нормальное начертание */
}
.select {
color: maroon; /* Цвет текста */
font-weight: 600; /* Полужирное начертание */
}
</style>
</head>
<body>
<h1>Мелодический голос персонажа</h1>
<p><span class=»select»>Поток сознания</span>, соприкоснувшись
в чем-то со своим главным антагонистом в постструктурной поэтике,
иллюстрирует былинный мифопоэтический хронотоп, об этом
свидетельствуют краткость и завершенность формы,
бессюжетность, своеобразие тематического развертывания.</p>
</body>
</html>
Результат данного примера показан на рис. 1.
Рис. 1. Применение свойства font-weight
Объектная модель
Объект.style.fontWeight
Спецификация
| Спецификация | Статус |
|---|---|
| CSS Fonts Module Level 3 | Возможная рекомендация |
| CSS Transitions | Рабочий проект |
| CSS Level 2 (Revision 1) | Рекомендация |
| CSS Level 1 | Рекомендация |
Спецификация
Каждая спецификация проходит несколько стадий одобрения.
- Recommendation (Рекомендация) — спецификация одобрена W3C и рекомендована как стандарт.
- Candidate Recommendation (Возможная рекомендация) — группа, отвечающая за стандарт, удовлетворена, как он соответствует своим целям, но требуется помощь сообщества разработчиков по реализации стандарта.
- Proposed Recommendation (Предлагаемая рекомендация) — на этом этапе документ представлен на рассмотрение Консультативного совета W3C для окончательного утверждения.
- Working Draft (Рабочий проект) — более зрелая версия черновика после обсуждения и внесения поправок для рассмотрения сообществом.
- Editor’s draft (Редакторский черновик) — черновая версия стандарта после внесения правок редакторами проекта.
- Draft (Черновик спецификации) — первая черновая версия стандарта.
Браузеры
| 3.5 | 12 | 2 | 3.5 | 1.3 | 1 |
Браузеры
В таблице браузеров применяются следующие обозначения.
- — элемент полностью поддерживается браузером;
- — элемент браузером не воспринимается и игнорируется;
- — при работе возможно появление различных ошибок, либо элемент поддерживается с оговорками.
Число указывает версию браузреа, начиная с которой элемент поддерживается.
См. также
Рецепты
Практика
Свойство font-weight в CSS устанавливает начертание (еще говорят толщину или насыщенность) шрифта и зависит от доступных вариантов в семействе шрифтов, а также от вариантов, определенных браузером.
Например, чтобы сделать жирный шрифт, нужно задать свойство:
font-weight: bold;
Содержание
- Значения
- Использование bolder и lighter
- Что происходит при недоступности заданного значения
Значения
Свойство font-weight принимает либо значения в виде ключевых слов, либо числа в диапазоне от 100 до 900.
Доступные ключевые значения:
- normal
- обычный, соответствует числу 400
- bold
- жирный текст, соответствует числу 700
- bolder
- более жирный относительно начертания родителя
- lighter
- более тонкий относительно родителя
Также есть 2 вспомогательных значения:
- inherit – указывает наследование показателя от родителя;
- initial – установка в значение по умолчанию.
Чтобы установленное начертание отобразилось на сайте, необходимо, чтобы шрифт его поддерживал. Как правило, большинство шрифтов поддерживают только часть значений.
Если шрифт имеет жирное («700») или нормально («400») начертание как часть семейства, браузер будет использовать их. Если они недоступны, браузер смоделирует собственные жирную или нормальную версию. Но он не будет моделировать другие недоступные варианты жирности.
Иногда можно встретить термин полужирное начертание или semibold, но такого предустановленного значения в CSS нет, это соответствует жирности 600.
Следующая демонстрация показывает использование различных вариантов жирности для текста:
See the Pen
font weight by Андрей (@adlibi)
on CodePen.
В приведенной выше демонстрации используется шрифт Open Sans, встроенный с помощью Google Fonts API. Загружаются все доступные варианты жирности. Недоступные варианты просто отображают ближайшим вариантом.
Обычные шрифты, такие как Arial, Helvetica, Georgia и т. д. не имеют начертаний, отличных от 400 и 700. Таким образом, в той же демонстрации с применением одного из этих шрифтов, в девяти абзацах будет отображаться только два варианта жирности.
Использование bolder и lighter
Толщина шрифта bolder и lighter (жирнее и тоньше) вычисляется относительно родительского элемента. Браузер будет искать ближайший «более жирный» или «легкий» вес, в зависимости от того, что доступно в семействе шрифта, в противном случае он просто выберет «400» или «700», в зависимости от того, что логичнее.
Дочерние элементы не будут наследовать bolder и lighter, а вместо этого унаследуют вычисленный вес.
Что происходит при недоступности заданного значения
Если заданное числовое значение веса недоступно, для определения жирности применяется такой подход:
- Если задано число больше
500, будет использовано первое доступное более жирное начертание (если такого нет, то первое доступное более светлое). - Если задано значение меньше
400, будет использовано первое доступное более светлое начертание (если такого нет, то первое доступное более жирное). - Если задано
400, будет применено500. Если500недоступно, будет использован подход из предыдущего пункта. - Если задано
500, будет применено400. Если400недоступно, то будет использован алгоритм для пункта 2.
Это значит, что для шрифтов, у которые есть только начертания normal и bold, значения 100-500 становятся normal, а 600-900 – bold.
In this introductory tutorial on HTML/CSS font weight, we will explore some easy to use, creative applications to further enhance the text on your web page.
What is Font Weight?
Font weight is the “value” placed on your font that will determine how bold or light your text will appear. There are many “values” that you can use that provide a great deal of flexibility towards creating the font weight that works best for how you want to display your text.
Displaying HTML Font Weight
If you want to try this yourself, copy the code and paste into a text editor such as Notepad or Notepad++. We will make the font weight “bold.”
How to Make Text Bold in CSS
<!DOCTYPE html>
<html>
<head>
<style type=text/css>
/* Styles */
p {
color: red;
font-weight: bold;
font: 18px Arial, Helvetica, sans-serif;
}
</style>
</head>
<body>
<p>Udacity is where you can learn about font weight</p>
</body>
</html>
This HTML and CSS code interacting together is explained in the following illustration:
The result on your web page is this. Notice the BOLD text.
Standard vs. Numerical Values for Font Weight
You can always use the traditional “bold” value to bold text, but there are other ways of displaying Font Weight. Using numerical values for instance, allows even greater control over the level of intensity of the Bold text.
What You Need to Know About Using Numerical Values
Although there are in actuality the following numerical values that you can use to define the “boldness” in your displayed text: 100, 200, 300, 400, 500, 600, 700, 800, and 900, the actual result is going to be determined by what font you use in your CSS.
Not every web font, or “font family” was originally built with an array of bold variations. Most font families actually have only a few weights available. What this means is that when a weight is specified for which no face exists, a face with a nearby weight will be used.
The numerical values are as follows:
- 100 – Thin
- 200 – Extra Light (Ultra Light)
- 300 – Light
- 400 – Normal
- 500 – Medium
- 600 – Semi Bold (Demi Bold)
- 700 – Bold
- 800 – Extra Bold (Ultra Bold)
- 900 – Black (Heavy)
Here are some examples of various font-weight values:
Note: We will be using font-family: Helvetica, Arial, sans-serif; for this demonstration.
| CSS Style | Web Output |
| font-weight: bold; | |
| font-weight: normal; | |
| font-weight: 200;(lighter than normal) | |
| font-weight: 400;(same as “normal”) | |
| font-weight: 700;(same as “bold”) | |
| font-weight: 900;(this is the maximum) |
What you can do with web fonts is endless as you will see as we continue to explore all realms of possibilities. In future blog posts on this subject, we will explore more advanced, cutting-edge areas of font-weight development for the web.
A Matter of Style
Use Case Scenarios
When it comes to style, there will be times when you want to either make your text stand out or make it less noticeable.
Making your font text less dramatic can have a pleasing effect on the eye when you want to showcase words in your web page that hint at almost being subliminal.
For instance:
<!DOCTYPE html>
<html>
<head>
<style type=text/css>
/* Styles */
p {
color: gray;
font-weight: 100;
font-size: 18px;
font-family: Arial, Helvetica, sans-serif;
}
</style>
</head>
<body>
<p>Udacity is where you can learn about font weight</p>
</body>
</html>
The web result of using the numerical font weight of 100 would look like this:
Now if you want to emphasize the point of your message, enhance your font weight with a higher number.
For instance:
<!DOCTYPE html>
<html>
<head>
<style type=text/css>
/* Styles */
p {
color: gray;
font-weight: 900;
font-size: 18px;
font-family: Arial, Helvetica, sans-serif;
}
</style>
</head>
<body>
<p>Udacity is where you can learn about font weight</p>
</body>
</html>
The web result of using the numerical font weight of 900 would look like this:
Working with Different Browsers
In the world of web creation, different browsers can at times yield different results.
Let’s test this out. We will use the following code for the sample:
<!DOCTYPE html><html><head>
<style type=text/css>
/* Styles */
p { color: orange; font-weight: 900; font-size: 16px; font-family: Arial, Helvetica, sans-serif;}
</style></head>
<body>
<p>Udacity is where you can learn about font weight</p>
</body></html>
| Browser Type | Sample Yield |
| Google Chrome | |
| FireFox | |
| Microsoft Edge | |
| Internet Explorer |
As you can see, there are slight variations in how the text displays, but at least for this example, the differences are not significant. With correct use of the CSS Style to enhance the font text, we were able to control the output, helping to assure consistency within four different browsers.
Outro: (Where to Next?)
This introduction to font weight should provide a starting point for further inquiry into the unlimited creative aspects that HTML offers. We will continue to explore other areas of HTML design in the next blog. We hope this introduction has piqued your interest and inspired you to explore further and dive deeper into the world of web design.
Enroll in our Intro to Programming Nanodegree program today!
Start Learning
The font-weight CSS property specifies the weight (or boldness) of the font. The font weights available to you will depend on the font-family you are using. Some fonts are only available in normal and bold.
/* Keyword values */ font-weight: normal; font-weight: bold; /* Keyword values relative to the parent */ font-weight: lighter; font-weight: bolder; /* Numeric keyword values */ font-weight: 100; font-weight: 200; font-weight: 300; font-weight: 400; font-weight: 500; font-weight: 600; font-weight: 700; font-weight: 800; font-weight: 900; /* Global values */ font-weight: inherit; font-weight: initial; font-weight: unset;
| Initial value | normal |
|---|---|
| Applies to | all elements. It also applies to ::first-letter and ::first-line. |
| Inherited | yes |
| Media | visual |
| Computed value | the keyword or the numerical value as specified, with bolder and lighter transformed to the real value |
| Animation type | a font weight |
| Canonical order | the unique non-ambiguous order defined by the formal grammar |
Syntax
The font-weight property is specified using a single keyword value from the list below.
Values
normal- Normal font weight. Same as
400. bold- Bold font weight. Same as
700. lighter- One font weight lighter than the parent element (among the available weights of the font).
bolder- One font weight heavier than the parent element (among the available weights of the font).
100,200,300,400,500,600,700,800,900- Numeric font weights for fonts that provide more than just
normalandbold.
Fallback weights
If the exact weight given is unavailable, then the following heuristic is used to determine the weight actually rendered:
- If a weight greater than
500is given, the closest available heavier weight is used (or, if there is none, the closest available lighter weight). - If a weight less than
400is given, the closest available lighter weight is used (or, if there is none, the closest available heavier weight). - If a weight of exactly
400is given, then500is used. If500is not available, then the heuristic for font weights less than 400 is used. - If a weight of exactly
500is given, then400is used. If400is not available, then the heuristic for font weights less than 400 is used.
This means that for fonts that provide only normal and bold, 100—500 are normal, and 600—900 are bold.
Meaning of relative weights
When lighter or bolder is specified, the following chart shows how the absolute font weight of the element is determined:
| Inherited value | bolder |
lighter |
|---|---|---|
| 100 | 400 | 100 |
| 200 | 400 | 100 |
| 300 | 400 | 100 |
| 400 | 700 | 100 |
| 500 | 700 | 100 |
| 600 | 900 | 400 |
| 700 | 900 | 400 |
| 800 | 900 | 700 |
| 900 | 900 | 700 |
Common weight name mapping
The numerical values (100 to 900) roughly correspond to the following common weight names:
| Value | Common weight name |
|---|---|
| 100 | Thin (Hairline) |
| 200 | Extra Light (Ultra Light) |
| 300 | Light |
| 400 | Normal |
| 500 | Medium |
| 600 | Semi Bold (Demi Bold) |
| 700 | Bold |
| 800 | Extra Bold (Ultra Bold) |
| 900 | Black (Heavy) |
Interpolation
A font-weight value is interpolated via discrete steps (multiples of 100). The interpolation happens in real number space and is converted to an integer by rounding to the nearest multiple of 100, with values halfway between multiples of 100 rounded towards positive infinity.
Formal syntax
normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900
Examples
HTML
<p> Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, 'and what is the use of a book,' thought Alice 'without pictures or conversations?' </p> <div>I'm heavy<br/> <span>I'm lighter</span> </div>
CSS
/* Set paragraph text to be bold. */
p {
font-weight: bold;
}
/* Set div text to two steps heavier than
normal but less than a standard bold. */
div {
font-weight: 600;
}
/* Set span text to be one step lighter
than its parent. */
span {
font-weight: lighter;
}
Result
Specifications
| Specification | Status | Comment |
|---|---|---|
| CSS Fonts Module Level 3 The definition of ‘font-weight’ in that specification. |
Candidate Recommendation | No change. |
| CSS Transitions The definition of ‘font-weight’ in that specification. |
Working Draft | Defines font-weight as animatable. |
| CSS Level 2 (Revision 1) The definition of ‘font-weight’ in that specification. |
Recommendation | No change. |
| CSS Level 1 The definition of ‘font-weight’ in that specification. |
Recommendation | Initial definition. |
Browser compatibility
- Desktop
- Mobile
| Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|---|
| Basic support | 2.0 | (Yes) | 1.0 (1.7 or earlier) | 3.0 | 3.5 | 1.3 |
| Feature | Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Basic support | 1.0 | (Yes) | 1.0 (1.0) | 6.0 | 6.0 | 3.1 |
Document Tags and Contributors
Contributors to this page:
mfluehr,
wbamberg,
erikadoyle,
gacelisnothing,
dilexie,
athnix,
SphinxKnight,
Sebastianz,
fscholz,
Jeremie,
waldyrious,
kscarfone,
TimothyGu,
Martyr2,
teoli,
Sheppy,
FredB,
ethertank,
jswisher,
brianloveswords,
McGurk,
grendel,
Mgjbot,
BijuGC,
Fredchat,
DBaron,
Backinblakk
Last updated by:
mfluehr,
Jun 22, 2017, 1:19:10 PM




