HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>CSS предоставляет много правил для стилизации шрифтов. С некоторыми из таких свойств вы уже знакомы - это свойство font-weight и font-size.</p>
1 <p>CSS предоставляет много правил для стилизации шрифтов. С некоторыми из таких свойств вы уже знакомы - это свойство font-weight и font-size.</p>
2 <p>Помимо насыщенности, CSS позволяет управлять следующими настройками:</p>
2 <p>Помимо насыщенности, CSS позволяет управлять следующими настройками:</p>
3 <ul><li>Семейство шрифтов;</li>
3 <ul><li>Семейство шрифтов;</li>
4 <li>Стиль шрифта;</li>
4 <li>Стиль шрифта;</li>
5 <li>Стиль строчных символов;</li>
5 <li>Стиль строчных символов;</li>
6 <li>Размер шрифта;</li>
6 <li>Размер шрифта;</li>
7 <li>Межстрочный интервал.</li>
7 <li>Межстрочный интервал.</li>
8 </ul><p>Не пугайтесь такому количеству различных свойств, их необязательно использовать все сразу. Некоторые используются достаточно редко.</p>
8 </ul><p>Не пугайтесь такому количеству различных свойств, их необязательно использовать все сразу. Некоторые используются достаточно редко.</p>
9 <h2>Семейство шрифтов</h2>
9 <h2>Семейство шрифтов</h2>
10 <p>CSS позволяет указывать шрифты, которые будут использованы на сайте. Для этого используется свойство font-family. Оно принимает список шрифтов, которые могут быть загружены на сайте. Это может быть одно семейство шрифтов или сразу несколько. Если указано несколько шрифтов, то браузер будет считывать их слева направо до первого шрифта, который он сможет использовать. Остальные шрифты будут игнорироваться. Например:</p>
10 <p>CSS позволяет указывать шрифты, которые будут использованы на сайте. Для этого используется свойство font-family. Оно принимает список шрифтов, которые могут быть загружены на сайте. Это может быть одно семейство шрифтов или сразу несколько. Если указано несколько шрифтов, то браузер будет считывать их слева направо до первого шрифта, который он сможет использовать. Остальные шрифты будут игнорироваться. Например:</p>
11 <p>Если у пользователя в системе есть шрифт<em>Georgia</em>, то будет применен он. В противном случае браузер будет искать шрифт<em>Times New Roman</em>. Теперь возможны две ситуации:</p>
11 <p>Если у пользователя в системе есть шрифт<em>Georgia</em>, то будет применен он. В противном случае браузер будет искать шрифт<em>Times New Roman</em>. Теперь возможны две ситуации:</p>
12 <ul><li>У пользователя в системе установлен шрифт<em>Times New Roman</em>- шрифт применится к странице.</li>
12 <ul><li>У пользователя в системе установлен шрифт<em>Times New Roman</em>- шрифт применится к странице.</li>
13 <li>У пользователя в системе<strong>не установлен</strong>шрифт<em>Times New Roman</em>- браузер подставит шрифт из основных настроек браузера. Это необходимо для возможности отобразить контент на странице.</li>
13 <li>У пользователя в системе<strong>не установлен</strong>шрифт<em>Times New Roman</em>- браузер подставит шрифт из основных настроек браузера. Это необходимо для возможности отобразить контент на странице.</li>
14 </ul><p>А какой шрифт именно выберет браузер? Тут все зависит от настроек. Может случиться так, что стандартный шрифт будет из другого типа. Это может "сломать" визуальную часть сайта. Все шрифты можно разделить на три большие группы:</p>
14 </ul><p>А какой шрифт именно выберет браузер? Тут все зависит от настроек. Может случиться так, что стандартный шрифт будет из другого типа. Это может "сломать" визуальную часть сайта. Все шрифты можно разделить на три большие группы:</p>
15 <ul><li>Антиква или шрифты с засечками. Такие шрифты чаще всего используются в книгах и новостных сайтах. В CSS обозначается serif.</li>
15 <ul><li>Антиква или шрифты с засечками. Такие шрифты чаще всего используются в книгах и новостных сайтах. В CSS обозначается serif.</li>
16 <li>Гротеск или шрифты без засечек. Основной тип шрифтов на сайтах. Прямо сейчас вы читаете именно такой шрифт. В CSS обозначается sans-serif.</li>
16 <li>Гротеск или шрифты без засечек. Основной тип шрифтов на сайтах. Прямо сейчас вы читаете именно такой шрифт. В CSS обозначается sans-serif.</li>
17 <li>Моноширинный шрифт. У этого семейства все символы имеют одинаковую ширину. Вы можете увидеть такой шрифт в терминалах или редакторах кода. В CSS обозначается monospace.</li>
17 <li>Моноширинный шрифт. У этого семейства все символы имеют одинаковую ширину. Вы можете увидеть такой шрифт в терминалах или редакторах кода. В CSS обозначается monospace.</li>
18 </ul><p>При указании шрифтов также возможно указать и основное семейство шрифтов. Если ни один из указанных шрифтов не был найден, то браузер подберет системный шрифт из того семейства, которое было указано. Дополним пример семейством шрифтов по умолчанию. В примере указаны шрифты из семейства антиква, поэтому стоит добавить соответствующее значение.</p>
18 </ul><p>При указании шрифтов также возможно указать и основное семейство шрифтов. Если ни один из указанных шрифтов не был найден, то браузер подберет системный шрифт из того семейства, которое было указано. Дополним пример семейством шрифтов по умолчанию. В примере указаны шрифты из семейства антиква, поэтому стоит добавить соответствующее значение.</p>
19 <p>Всегда указывайте семейство шрифтов по умолчанию. Это считается хорошей практикой, так как не все шрифты могут присутствовать в системе пользователя.</p>
19 <p>Всегда указывайте семейство шрифтов по умолчанию. Это считается хорошей практикой, так как не все шрифты могут присутствовать в системе пользователя.</p>
20 <h3>Установка новых шрифтов</h3>
20 <h3>Установка новых шрифтов</h3>
21 <p>Необязательно полагаться только на системные шрифты. В проекте могут использоваться совершенно разные шрифты, и нужно уметь их подключать. Сам по себе шрифт представляет собой файл. Форматов таких файлов может быть несколько, и важно знать, какими браузерами они поддерживаются.</p>
21 <p>Необязательно полагаться только на системные шрифты. В проекте могут использоваться совершенно разные шрифты, и нужно уметь их подключать. Сам по себе шрифт представляет собой файл. Форматов таких файлов может быть несколько, и важно знать, какими браузерами они поддерживаются.</p>
22 <ul><li><strong>.woff/.woff2</strong>- шрифт формата Web Open Font Format. Распространенный формат, который поддерживается большинством современных браузеров.</li>
22 <ul><li><strong>.woff/.woff2</strong>- шрифт формата Web Open Font Format. Распространенный формат, который поддерживается большинством современных браузеров.</li>
23 <li><strong>.ttf</strong>- шрифт формата TrueType. Данный формат был придуман в 80-е года 20 века и сейчас используется для поддержки старых браузеров. Совместим с современными браузерами. Золотая середина форматов.</li>
23 <li><strong>.ttf</strong>- шрифт формата TrueType. Данный формат был придуман в 80-е года 20 века и сейчас используется для поддержки старых браузеров. Совместим с современными браузерами. Золотая середина форматов.</li>
24 <li><strong>.eot</strong>- шрифт формата Embedded OpenType. Это наиболее старый формат. Его использование необходимо только в случае поддержки старых браузеров, например, Internet Explorer 6.0. Ситуация редкая, поэтому его использование почти не встречается.</li>
24 <li><strong>.eot</strong>- шрифт формата Embedded OpenType. Это наиболее старый формат. Его использование необходимо только в случае поддержки старых браузеров, например, Internet Explorer 6.0. Ситуация редкая, поэтому его использование почти не встречается.</li>
25 </ul><p>Для установки шрифта используется конструкция @font-face. Она позволяет подключить шрифт в различных расширениях, определить имя и путь к файлу. На примере шрифта<em>Roboto</em>воспользуемся такой конструкцией.</p>
25 </ul><p>Для установки шрифта используется конструкция @font-face. Она позволяет подключить шрифт в различных расширениях, определить имя и путь к файлу. На примере шрифта<em>Roboto</em>воспользуемся такой конструкцией.</p>
26 <p>Пусть наш проект имеет директорию<em>fonts/</em>, внутри которой находятся файлы шрифтов.</p>
26 <p>Пусть наш проект имеет директорию<em>fonts/</em>, внутри которой находятся файлы шрифтов.</p>
27 <p>project/ ├── css/ │ └── style.css ├── fonts/ │ │── Roboto-Regular.ttf │ │── Roboto-Bold.ttf │ └── Roboto-Light.ttf</p>
27 <p>project/ ├── css/ │ └── style.css ├── fonts/ │ │── Roboto-Regular.ttf │ │── Roboto-Bold.ttf │ └── Roboto-Light.ttf</p>
28 <p>Хорошим тоном является указание @font-face в самом начале CSS файла, а не перед первым использованием шрифта. Это позволит правильнее структурировать CSS. Есть два основных свойства, которые принимает @font-face:</p>
28 <p>Хорошим тоном является указание @font-face в самом начале CSS файла, а не перед первым использованием шрифта. Это позволит правильнее структурировать CSS. Есть два основных свойства, которые принимает @font-face:</p>
29 <ul><li>font-family - Имя подключаемого шрифта. Именно по нему можно обратиться после подключения.</li>
29 <ul><li>font-family - Имя подключаемого шрифта. Именно по нему можно обратиться после подключения.</li>
30 <li>src - Путь к файлу со шрифтом.</li>
30 <li>src - Путь к файлу со шрифтом.</li>
31 </ul><p>После указания этих свойств уже можно пользоваться шрифтом. Подключим<em>Roboto-Regular</em>.</p>
31 </ul><p>После указания этих свойств уже можно пользоваться шрифтом. Подключим<em>Roboto-Regular</em>.</p>
32 <p>Следующий шаг - подключить другие два начертания. Можно воспользоваться примером выше. Тогда наш CSS приобретет следующий вид:</p>
32 <p>Следующий шаг - подключить другие два начертания. Можно воспользоваться примером выше. Тогда наш CSS приобретет следующий вид:</p>
33 <p>Способ хоть и рабочий, но немного сложный. Вместо одного названия шрифта и управления его насыщенностью свойством font-weight приходится указывать три разных названия для каждого начертания в отдельности.</p>
33 <p>Способ хоть и рабочий, но немного сложный. Вместо одного названия шрифта и управления его насыщенностью свойством font-weight приходится указывать три разных названия для каждого начертания в отдельности.</p>
34 <p>@font-face позволяет указывать насыщенность шрифта с помощью font-weight. Это позволит подключить все начертания с использованием всего одного имени. В остальном запись не будет отличаться от того, что было в прошлом примере.</p>
34 <p>@font-face позволяет указывать насыщенность шрифта с помощью font-weight. Это позволит подключить все начертания с использованием всего одного имени. В остальном запись не будет отличаться от того, что было в прошлом примере.</p>
35 <p>Пара слов об особенностях использования свойства font-family внутри конструкции @font-face. Указывая имя шрифта, не нужно дополнительно указывать семейство шрифтов. Это делается при указании шрифта у элемента. То есть, вот такая запись является<em>некорректной</em>:</p>
35 <p>Пара слов об особенностях использования свойства font-family внутри конструкции @font-face. Указывая имя шрифта, не нужно дополнительно указывать семейство шрифтов. Это делается при указании шрифта у элемента. То есть, вот такая запись является<em>некорректной</em>:</p>
36 <p>Особое внимание обратите на то, что в примере не использовались кавычки. Это не является ошибкой. Использовать их или нет - выбор разработчика, но если в названии шрифта есть пробельные символы, то используйте кавычки. Для названия из одного слова можно опустить кавычки. Важно помнить, что если вы подключили шрифт с кавычками, то с ними нужно и указывать шрифт в селекторах. Если кавычек не было, то и при указании шрифта они не нужны</p>
36 <p>Особое внимание обратите на то, что в примере не использовались кавычки. Это не является ошибкой. Использовать их или нет - выбор разработчика, но если в названии шрифта есть пробельные символы, то используйте кавычки. Для названия из одного слова можно опустить кавычки. Важно помнить, что если вы подключили шрифт с кавычками, то с ними нужно и указывать шрифт в селекторах. Если кавычек не было, то и при указании шрифта они не нужны</p>
37 <h2>Стиль шрифта</h2>
37 <h2>Стиль шрифта</h2>
38 <p>Помимо обычного начертания, CSS позволяет задать и другой вариант отображения шрифта - курсивный. Для этого используется свойство font-style, которое может принимать одно из трех значений:</p>
38 <p>Помимо обычного начертания, CSS позволяет задать и другой вариант отображения шрифта - курсивный. Для этого используется свойство font-style, которое может принимать одно из трех значений:</p>
39 <ul><li>normal - стандартное значение. Соответствует нормальному отображению шрифта. Именно такой стиль вы читаете прямо сейчас.</li>
39 <ul><li>normal - стандартное значение. Соответствует нормальному отображению шрифта. Именно такой стиль вы читаете прямо сейчас.</li>
40 <li>italic - курсивное начертание. Данное начертание имеет наклонные буквы, в отличие от нормального стиля.<em>Вот так выглядит курсивный шрифт</em>.</li>
40 <li>italic - курсивное начертание. Данное начертание имеет наклонные буквы, в отличие от нормального стиля.<em>Вот так выглядит курсивный шрифт</em>.</li>
41 <li>oblique - тоже курсивное начертание. Зачастую оно не отличается от значения italic.</li>
41 <li>oblique - тоже курсивное начертание. Зачастую оно не отличается от значения italic.</li>
42 </ul><p>Но почему существует два похожих значения для курсива? На самом деле они не очень похожи. Курсив задаваемый значением italic, является самостоятельным шрифтом, для которого есть отдельный файл в системе или на сервере. Он относится больше к рукописному тексту, тогда как oblique искусственно наклоняет символы текущего шрифта.</p>
42 </ul><p>Но почему существует два похожих значения для курсива? На самом деле они не очень похожи. Курсив задаваемый значением italic, является самостоятельным шрифтом, для которого есть отдельный файл в системе или на сервере. Он относится больше к рукописному тексту, тогда как oblique искусственно наклоняет символы текущего шрифта.</p>
43 <h2>Строчные символы</h2>
43 <h2>Строчные символы</h2>
44 <p>С помощью CSS можно задать такой вид строчных символов как "Капитель".</p>
44 <p>С помощью CSS можно задать такой вид строчных символов как "Капитель".</p>
45 <p>Капите́ль - это начертание строчных букв как заглавных, но их размер совпадает (или приближен) к размеру строчных. Такой прием используется в дизайне в виде стилистического оформления. Посмотрите на этот параграф:</p>
45 <p>Капите́ль - это начертание строчных букв как заглавных, но их размер совпадает (или приближен) к размеру строчных. Такой прием используется в дизайне в виде стилистического оформления. Посмотрите на этот параграф:</p>
46 <p>Текст с использованием капители</p>
46 <p>Текст с использованием капители</p>
47 <p>По своей высоте эта фраза не отличается от простого набора строчными символами, но стилистически они подстраиваются под заглавные символы.</p>
47 <p>По своей высоте эта фраза не отличается от простого набора строчными символами, но стилистически они подстраиваются под заглавные символы.</p>
48 <p>Капитель устанавливается с помощью свойства font-variant. У него возможны два значения:</p>
48 <p>Капитель устанавливается с помощью свойства font-variant. У него возможны два значения:</p>
49 <ul><li>normal - стандартная стилистика строчных символов.</li>
49 <ul><li>normal - стандартная стилистика строчных символов.</li>
50 <li>small-caps - капитель.</li>
50 <li>small-caps - капитель.</li>
51 </ul><h2>Межстрочный интервал</h2>
51 </ul><h2>Межстрочный интервал</h2>
52 <p>Межстрочный интервал (интерлиньяж) - это расстояние по вертикали между базовыми линиями одного и другого символа в соседних строках. Так создается расстояние между этими строками. Важным элементом при создании дизайна является использование достаточного межстрочного интервала. Чаще всего это 150% от значения размера шрифта. Например, если шрифт имеет размер 16 пикселей, то межстрочный интервал должен быть не менее 24 пикселей. Такое значение не является необходимым правилом и от него всегда можно отступить.</p>
52 <p>Межстрочный интервал (интерлиньяж) - это расстояние по вертикали между базовыми линиями одного и другого символа в соседних строках. Так создается расстояние между этими строками. Важным элементом при создании дизайна является использование достаточного межстрочного интервала. Чаще всего это 150% от значения размера шрифта. Например, если шрифт имеет размер 16 пикселей, то межстрочный интервал должен быть не менее 24 пикселей. Такое значение не является необходимым правилом и от него всегда можно отступить.</p>
53 <p>Для указания межстрочного интервала используется свойство line-height. Оно может принимать значения с различными единицами измерения. Чаще всего используют число, указывающее, во сколько раз интервал больше размера шрифта.</p>
53 <p>Для указания межстрочного интервала используется свойство line-height. Оно может принимать значения с различными единицами измерения. Чаще всего используют число, указывающее, во сколько раз интервал больше размера шрифта.</p>
54 <p><a>Codepen</a></p>
54 <p><a>Codepen</a></p>
55 <p>Может показаться, что значения 1.5em и 1.5 будут работать одинаково. Это правда, но только для одного элемента. Сравним вот такие блоки:</p>
55 <p>Может показаться, что значения 1.5em и 1.5 будут работать одинаково. Это правда, но только для одного элемента. Сравним вот такие блоки:</p>
56 <p>При использовании значения 1.5 межстрочный интервал будет высчитан отдельно для блока news и для<em>каждого</em>элемента внутри, в зависимости от его размера шрифта:</p>
56 <p>При использовании значения 1.5 межстрочный интервал будет высчитан отдельно для блока news и для<em>каждого</em>элемента внутри, в зависимости от его размера шрифта:</p>
57 <ul><li>У блока news межстрочный интервал будет равен 16 * 1.5 = 24px</li>
57 <ul><li>У блока news межстрочный интервал будет равен 16 * 1.5 = 24px</li>
58 <li>Заголовок второго уровня получит интервал 18 * 1.5 = 27px</li>
58 <li>Заголовок второго уровня получит интервал 18 * 1.5 = 27px</li>
59 </ul><p>Заменим line-height: 1.5 на line-height: 1.5em:</p>
59 </ul><p>Заменим line-height: 1.5 на line-height: 1.5em:</p>
60 <p>При указании единицы измерения свойство line-height будет посчитано<em>один раз</em>и это значение применится ко всем элементам внутри:</p>
60 <p>При указании единицы измерения свойство line-height будет посчитано<em>один раз</em>и это значение применится ко всем элементам внутри:</p>
61 <ul><li>У блока news межстрочный интервал будет равен 16 * 1.5 = 24px</li>
61 <ul><li>У блока news межстрочный интервал будет равен 16 * 1.5 = 24px</li>
62 <li>Заголовок второго уровня тоже получит интервал в 24px, так как оно будет наследовано от блока news</li>
62 <li>Заголовок второго уровня тоже получит интервал в 24px, так как оно будет наследовано от блока news</li>
63 </ul><h2>Обобщенное правило</h2>
63 </ul><h2>Обобщенное правило</h2>
64 <p>Теперь, для работы со шрифтами, вы знаете все основные правила. Это:</p>
64 <p>Теперь, для работы со шрифтами, вы знаете все основные правила. Это:</p>
65 <ul><li>font-style</li>
65 <ul><li>font-style</li>
66 <li>font-variant</li>
66 <li>font-variant</li>
67 <li>font-weight</li>
67 <li>font-weight</li>
68 <li>font-size</li>
68 <li>font-size</li>
69 <li>line-height</li>
69 <li>line-height</li>
70 <li>font-family</li>
70 <li>font-family</li>
71 </ul><p>Их можно указывать не только по отдельности, но и все вместе с помощью одного CSS правила font. Шесть разных правил внутри одного! Это может быть удобно, если действительно нужны все значения. При этом вы не обязаны указывать все значения. Единственное ограничение - наличие значений для font-size и font-family. Остальные значения можно не указывать. Укажем значения для всех этих свойств внутри правила font. Свойства указываются через пробел:</p>
71 </ul><p>Их можно указывать не только по отдельности, но и все вместе с помощью одного CSS правила font. Шесть разных правил внутри одного! Это может быть удобно, если действительно нужны все значения. При этом вы не обязаны указывать все значения. Единственное ограничение - наличие значений для font-size и font-family. Остальные значения можно не указывать. Укажем значения для всех этих свойств внутри правила font. Свойства указываются через пробел:</p>
72 <p><a>Codepen</a></p>
72 <p><a>Codepen</a></p>
73 <p>Важно обратить внимание на запись 16px/24px. Внутри правила font так обозначаются свойства font-size и line-height.</p>
73 <p>Важно обратить внимание на запись 16px/24px. Внутри правила font так обозначаются свойства font-size и line-height.</p>
74 <h3>Использование одного правила или нескольких</h3>
74 <h3>Использование одного правила или нескольких</h3>
75 <p>Этот раздел относится не только к правилу font, но и ко всем обобщенным правилам, которые вы изучите в процессе прохождения курсов. С одной стороны, использование одного правила сокращает количество строк, которые используются в CSS. Это действительно так, но есть две основные проблемы использования таких свойств:</p>
75 <p>Этот раздел относится не только к правилу font, но и ко всем обобщенным правилам, которые вы изучите в процессе прохождения курсов. С одной стороны, использование одного правила сокращает количество строк, которые используются в CSS. Это действительно так, но есть две основные проблемы использования таких свойств:</p>
76 <ol><li>Запоминание правильного порядка значений. Используя обобщенные свойства вам всегда стоит держать в голове верный порядок значений свойств. В этом легко можно ошибиться на первых этапах изучения. Хорошим вариантом будет использование отдельных свойств, но в том порядке, в котором они идут в обобщенном свойстве. С опытом вы сможете переключиться на одно правило.</li>
76 <ol><li>Запоминание правильного порядка значений. Используя обобщенные свойства вам всегда стоит держать в голове верный порядок значений свойств. В этом легко можно ошибиться на первых этапах изучения. Хорошим вариантом будет использование отдельных свойств, но в том порядке, в котором они идут в обобщенном свойстве. С опытом вы сможете переключиться на одно правило.</li>
77 <li>Обобщенное свойство font перебивает отдельные font-size, line-height и так далее. Если в коде вы указали font-variant: small-caps;, а потом для этого же элемента применили font: 16px/24px sans-serif;, то капитель будет сброшена в значение по умолчанию.</li>
77 <li>Обобщенное свойство font перебивает отдельные font-size, line-height и так далее. Если в коде вы указали font-variant: small-caps;, а потом для этого же элемента применили font: 16px/24px sans-serif;, то капитель будет сброшена в значение по умолчанию.</li>
78 </ol><p>Используйте обобщенные свойства только один раз при задании стандартных стилей. Например, свойство font отлично подойдет для селектора body, а модификации текста будут производиться одиночными свойствами.</p>
78 </ol><p>Используйте обобщенные свойства только один раз при задании стандартных стилей. Например, свойство font отлично подойдет для селектора body, а модификации текста будут производиться одиночными свойствами.</p>