Как задать шрифт в CSS: свойство font-family

font-family задаёт шрифт текста и записывается как список через запятую: несколько названий шрифтов плюс обязательно одно общее семейство в конце - serif, sans-serif или monospace. Браузер проверяет шрифты по порядку слева направо и использует первый, который реально есть на компьютере читателя.

Попробуй прямо сейчас: замени Arial на несуществующее слово вроде Fantastico - текст не сломается, браузер просто перейдёт к следующему по списку sans-serif. А теперь удали и sans-serif тоже - и результат уже будет зависеть от самого браузера, а не от твоего кода.

Зачем нужен запасной вариант шрифта

Шрифт, который ты указал, может быть не установлен на компьютере читателя - и тогда браузер просто пропускает его и берёт следующий из списка. Если запасного варианта нет вообще, браузер подставляет свой собственный шрифт по умолчанию (обычно с засечками, вроде Times New Roman) - и это может совсем не то, что ты задумывал.

font-family: "Open Sans", Arial, sans-serif; - если нет ни Open Sans, ни Arial, текст всё равно останется без засечек благодаря sans-serif в конце.

font-family: "Open Sans"; - без общего семейства в конце: если Open Sans недоступен, браузер уходит в свой дефолт, который у разных читателей может выглядеть по-разному.

Когда название шрифта нужно брать в кавычки

Если в названии шрифта больше одного слова или есть цифры - бери его в кавычки: "Times New Roman", "Courier New". Это самый надёжный способ не ошибиться. Дело не в косметике: без кавычек браузер может не опознать название как одно целое, и тогда сломается не отдельный шрифт, а вся строка font-family целиком.

font-family: "Courier New", monospace; - составное название в кавычках, всё работает.

font-family: Courier New, monospace; без кавычек - для большинства названий сработает и так, но полагаться на это не стоит: некоторые составные имена (например, с цифрой внутри) без кавычек ломают правило целиком, а не просто "не находят" шрифт.

Общие семейства: serif, sans-serif, monospace

Общих семейств пять: serif (с засечками, как Times New Roman), sans-serif (без засечек, как Arial), monospace (все буквы одной ширины, как Courier New), а ещё cursive (рукописный) и fantasy (декоративный). Это служебные слова браузера, а не названия конкретных шрифтов - каждый браузер сам решает, какой именно установленный шрифт показать для каждого семейства.

font-family: Arial, sans-serif; - serif/sans-serif/monospace пишутся без кавычек, это ключевые слова.

font-family: Arial, "sans-serif"; - в кавычках "sans-serif" перестаёт быть служебным словом и превращается в поиск шрифта с таким буквальным именем, которого почти наверняка нет.

Из истории Свойство font-family - одно из самых старых в CSS: оно уже было в самой первой версии спецификации CSS1, ставшей рекомендацией W3C 17 декабря 1996 года, и с тех пор почти не менялось - те же пять общих семейств (serif, sans-serif, cursive, fantasy, monospace) и та же логика списка через запятую работают и сегодня, спустя почти 30 лет. Источник: w3.org - CSS1, раздел про font-family, 1996.

Частые ошибки новичков

ОшибкаЧто происходитКак исправить
Не указан запасной вариант в конце списка Если основной шрифт недоступен, браузер подставляет свой собственный дефолт вместо задуманного Всегда заканчивать список общим семейством: serif, sans-serif или monospace
Составное название без кавычек содержит отдельное слово-число (например Goudy Bookletter 1911) Всё правило font-family становится невалидным целиком - браузер не доходит даже до запасного варианта в этом же списке Такие названия всегда брать в кавычки: "Goudy Bookletter 1911"
Общее семейство взято в кавычки, например "serif" Браузер ищет шрифт с буквальным именем "serif", а не подставляет системный - обычно такого шрифта нет Общие семейства пишутся без кавычек: serif, sans-serif, monospace
Общее семейство стоит первым или в середине списка Браузер сразу берёт первое совпадение и не доходит до более конкретных шрифтов дальше по списку Перечислять от самого желаемого шрифта к самому общему, общее семейство - только в конце

Шпаргалка

ПравилоПример
Базовый синтаксисfont-family: "Открытый шрифт", Arial, sans-serif;
Кавычки для составных названийБольше одного слова или есть цифры - в кавычки: "Times New Roman"
Общие семейства без кавычекserif, sans-serif, monospace, cursive, fantasy
Порядок в спискеСначала желаемый шрифт(ы), в конце - общее семейство
Формы не наследуют шрифтbutton/input/textarea по умолчанию используют свой шрифт, не шрифт body

Коротко: отвечаем на вопросы

Какой шрифт браузер использует по умолчанию, если font-family вообще не указан?

Обычно шрифт с засечками вроде Times New Roman - это дефолт браузера, а не сайта, поэтому на разных устройствах текст без font-family может выглядеть по-разному.

Почему у кнопок и полей ввода шрифт не такой, как у остального текста?

Элементы button, input и textarea не наследуют font-family от родителя по умолчанию - у них свой собственный шрифт из стилей браузера, поэтому для них нужно задавать font-family отдельно.

Категория
css
Поделиться в социальных сетях

Отправить комментарий

0 Комментарии

Отправить комментарий (0)

#buttons=(Хорошо) #days=(20)

Мы используем файлы cookie для улучшения работы сайта. Подробнее
Хорошо
×