Как задавать размеры шрифта в вёрстке — Журнал «Код»

Продолжаем говорить о размерах в CSS. Мы уже разбирали пиксели, проценты и зависимость от окна браузера, а теперь посмотрим на особенности размеров шрифтов.

Коротко о том, что уже было: пиксели и высота экрана

Самый простой способ задать размер чего-нибудь на веб-странице — указать его в пикселях:

font-size: 16px;

Также можно указать размер в виде пропорций от ширины или высоты браузера. Например, чтобы размер шрифта был 1/10 от высоты окна. Необычно, но может быть интересно:

font-size: 10vh;

Проценты и шрифты

Ещё есть проценты, но с ними сложнее: нужно знать размеры родительского элемента, чтобы процентам было от чего отталкиваться. Например, если мы просто напишем  font-size: 50%;, то браузер сделает так:

  1. Поищет в стилях, есть ли где-то точное указание размеров шрифта для этого или родительского элемента.
  2. Если есть — возьмёт 50 процентов от них.
  3. Если нет — возьмёт стандартный размер шрифта для этого элемента из своих настроек и уже от них посчитает 50%.
<!DOCTYPE html>
<html lang="ru">
<head>
	<meta charset="utf-8">
	<title>Размеры шрифтов</title>
	<style type="text/css">
		/*задаём общие параметры для всей страницы*/
		body {
		  text-align: center;
		  margin: 10;
		  font-family: Verdana, Arial, sans-serif;
		  font-size: 40px;
		}
		
	</style>
</head>
<body>
	<p>Привет, это журнал «Код»!</p>
	
</body>
</html>
Браузер взял размер шрифта 40 пикселей из общих настроек для всей страницы.

Теперь добавим отдельный стиль для абзаца и в нём укажем, что размер текста должен быть 50%:

p {
font-size: 50%;
}

А вот что будет, если мы удалим размер в пикселях из стиля body{} и дадим браузеру самому разобраться с размером:

Так как мы не задали точные размеры, то браузер взял какой-то свой размер абзаца по умолчанию и посчитал 50% от этого стандартного размера. Получилось мелко и нечитаемо.

Em — относительный размер шрифта

Если неохота считать проценты или нужно, чтобы шрифт точно был в 2 раза больше или в 0,7 раз меньше обычного шрифта, используют em. Это то же самое, что проценты:

font-size: 100% — это как font-size:1em .

<!DOCTYPE html>
<html lang="ru">
<head>
	<meta charset="utf-8">
	<title>Размеры шрифтов</title>
	<style type="text/css">
		/*задаём общие параметры для всей страницы*/
		body {
		  text-align: center;
		  margin: 10;
		  font-family: Verdana, Arial, sans-serif;
		  font-size: 20px;
		}
	</style>
</head>
<body>
	<!-- текст с основным размером шрифта -->
	<p>Привет, это журнал «Код»!</p>
	<!-- эта строка будет иметь шрифт в 2 раза больше -->
	<p>А это — статья про размеры шрифтов</p>
	<!-- а эта — в 0,7 раза меньше, чем основной шрифт-->
	<p>И здесь всё постоянно меняется</p>
</body>
</html>

Так же, как и с процентами, em — это относительные значения. Всё зависит от родительского элемента. В этом примере родительским элементом был общий размер для всей страницы, заданный в body{}. Но что, если мы вложим с помощью блоков абзацы друг в друга?

<!DOCTYPE html>
<html lang="ru">
<head>
	<meta charset="utf-8">
	<title>Размеры шрифтов</title>
	<style type="text/css">
		/*задаём общие параметры для всей страницы*/
		body {
		  text-align: center;
		  margin: 10;
		  font-family: Verdana, Arial, sans-serif;
		  font-size: 20px;
		}
	</style>
</head>
<body>
	<div>
		<!-- текст с основным размером шрифта -->
		<p>Привет, это журнал «Код»!</p>
		<!-- меняем размер текста относительно предыдущего блока -->
		<div>
			<!-- эта строка будет иметь шрифт в 2 раза больше предыдущего блока -->
			<p>Делаем шрифт побольше предыдущего</p>
			<!-- снова меняем размер текста, но уже относительно предыдущего блока -->
			<div >
				<!-- эта строка будет в 0,7 раза меньше, чем в предыдущем блоке-->
				<p>А этот — поменьше своего предыдущего</p>
			</div>
		</div>
	</div>
</body>
</html>

Размеры в эмах удобно использовать для вёрстки разных иерархических элементов, где каждый вложенный уровень должен по размеру быть меньше предыдущего. Чтобы каждый раз не считать размеры вручную, можно использовать одно и то же значение в em — а браузер сам уменьшит шрифт пропорционально вложенности.

👉 Em считается относительно текущего размера шрифта и пересчитывается при изменении размеров родительского шрифта. Это можно использовать для адаптивной вёрстки.

Кроме em есть ещё rem — она считает размеры шрифта только относительно тех, которые заданы в блоке стилей html{}. Если этого блока нет или в нём ничего не написано — rem посчитает размер шрифта от стандартного значения в браузере. Отличие от em в том, что даже при вложенности друг в друга все значения будут считаться не относительно предыдущего блока, а относительно значения в html{}.

Межстрочный интервал

Помимо размера самих букв у текста есть параметр межстрочного интервала — это расстояние между нижними краями текста на каждой строке.

Стандартное значение межстрочного интервала — normal. Это значит, что браузер спросит у шрифта, какое межстрочное расстояние тот предпочитает. Вам ни о чём думать не нужно:

p {font-size: 1em; line-height: normal}

Интересно, что вся строка выше в целом бессмысленна, потому что она говорит браузеру «у текста абзацев должен быть стандартный размер и стандартный межстрочный интервал». На что браузер справедливо скажет: «Да я и так бы их сделал стандартными, не учи меня жить». 

Иногда мы используем нестандартные шрифты, в которых браузер не знает стандартного межстрочного интервала. Или он его знает, но нас этот интервал не устраивает. Тогда интервал можно задать во всех тех же единицах: пикселях, емах, процентах. 

p {line-height: 22px;}p {line-height: 1.3em;}p {line-height: 130%;}

Как адаптировать размер текста под размер экрана

Допустим, дизайнер поручил нам сделать так, чтобы заголовки на странице меняли размер в зависимости от ширины экрана. Если экран широкий, то и заголовок должен быть большим. Если экран узкий — пусть будет компактным. 

Делаем сами: адаптивный сайт

Самый прямолинейный способ это сделать — задать размер в единицах vw. Например, 1vw — это 1% ширины экрана; 10vw — 10% ширины экрана. Если экран шириной 1000 пикселей, то 20vw — это 200 пикселей.

Звучит неплохо, но может плохо выглядеть: смартфоны обычно очень узкие, а экраны компьютеров очень широкие, и разница в размере шрифта будет в 5–6 раз. И если, например, основной текст фиксированного размера, а заголовки должны менять размер, то на широких экранах заголовки будут мельче, чем основной текст.

<!DOCTYPE html>
<html lang="ru">
<head>
	<meta charset="utf-8">
	<title>Размеры шрифтов</title>
	<style type="text/css">
		/*задаём общие параметры для всей страницы*/
		body {
		  text-align: center;
		  margin: 10;
		  font-family: Verdana, Arial, sans-serif;
		}
		h3 {
		  /*заголовок будет фиксированного размера*/
		  font-size: 40px;
		}
		p {
		  /*а размер текста будет зависеть от ширины экрана*/
		  font-size: 5vw;
		}
	</style>
</head>`
<body>
	<div>
		<!-- заголовок, размер которого зависит от размера экрана -->
		<h3>Привет, это журнал «Код»!</h3>
		
		<!-- основной текст, который не зависит от размера экрана -->
		<p>Этот текст зависит от ширины экрана.
Чем больше ширина — тем больше размер этого текста</p> </body> </html>
На телефоне с узким экраном всё выглядит нормально.А на широком экране компьютера текст стал больше заголовка.

Второй вариант — использовать медиазапросы. Мы расскажем о них подробно в другой статье, а пока кратко: это когда мы можем накатывать разные стили на документ в зависимости от того, как этот документ отображается. Можно сказать: «Если экран шире 500 пикселей, используй вот такой размер шрифта; если шире 1000 пикселей — сякой; а если это не веб-страница, а версия для печати — вообще используй другой шрифт и размер».

Тогда мы можем просто задать размеры стандартных экранов смартфонов и прописать нужные размеры текста для каждого, и всё будет выглядеть идеально.

@media screen and (min-width: 601px) { h3 {font-size: 110px;}}@media screen and (max-width: 600px) { h3 {font-size: 40px;}}

Теперь всё в порядке.

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Олег Вешкурцев

Относительный размер шрифта — Оформление текста — HTML Academy

Загрузка…
Через несколько секунд всё будет готово

  • index.html
  • style.css

HTML

<!DOCTYPE html> <html lang=»ru»> <head> <meta charset=»utf-8″> <title>Дневник начинающего верстальщика</title> <link rel=»stylesheet» href=»style.css»> </head> <body> <header> <p>Блог</p> <nav> <a href=»index.html»>На главную</a> </nav> </header> <main> <article> <h2>День второй. Хочу быть верстальщиком</h2> <p>Сегодня весь вечер просидел в интернете.

Читал про преимущества работы верстальщиком. Часто отвлекался на видео с котиками, конечно, но кое-что я запомнил:</p> <ul> <li>ты делаешь полезное дело</li> <li>можешь работать удалённо</li> <li>интересные люди</li> <li>хорошая зарплата</li> </ul> <p>Желания учиться резко прибавилось.</p> </article> <aside> Тут могла быть ваша реклама </aside> </main> <footer> Подвал сайта </footer> </body> </html>

CSS

body { padding: 0 30px; font-size: 16px; line-height: 26px; font-family: «Arial», sans-serif; color: #222222; background: #ffffff url(«img/bg-page.png») no-repeat top center; } h2 { font-size: 24px; line-height: normal; } h3 { font-size: 20px; line-height: normal; } a { color: #0099ef; text-decoration: underline; } . page-title { font-size: 36px; } .avatar { border-radius: 50%; } .blog-navigation { margin-bottom: 30px; padding: 20px; color: #ffffff; background-color: #4470c4; border: 5px solid #2d508f; } .blog-navigation h3 { margin-top: 0; } .blog-navigation ul { padding-left: 0; list-style: none; } .blog-navigation li { margin-bottom: 5px; } .blog-navigation a { color: #ffffff; } .skills dd { margin: 0; margin-bottom: 10px; background-color: #e8e8e8; } .skills-level { font-size: 12px; text-align: center; color: #ffffff; background-color: #4470c4; } .skills-level-ok { background-color: #47bb52; } footer { margin-top: 30px; }

Что в задании вам не понравилось?

Не работает проверка кодаЗадание слишком сложноеНепонятная теорияДругое (сейчас напишу)

Другое (сейчас напишу)

Спасибо! Мы скоро всё исправим)

Код изменился, нажмите «Обновить» или включите автозапуск.

Вы перешли на другую страницу

Кликните внутри мини-браузера, чтобы поставить фокус в это окно.

ЗадачиВыполнено

  1. Для класса .page-title смените размер шрифта на 2.5em,
  2. а затем увеличьте размер шрифта у всего body до 20px и убедитесь, что у заголовка при этом также пропорционально увеличился размер шрифта.

Коды размера шрифта HTML и теги

 

size=" размер шрифта " >…

Вот краткое изложение всех различных кодов размера шрифта HTML, которые вы можете использовать, чтобы сделать текст больше или меньше на своих веб-страницах.

Прежде всего, вы можете указать размер текста на своей веб-странице с помощью атрибута ‘size’ в коде элемента HTML font . Если размер текста на веб-странице не определен, веб-браузер отобразит текст с размером 3.

Значение, которое вы вводите для атрибута размера , представляет собой число, представляющее любой из семи различных относительных размеров. Эти номера от 1 до 7 соответственно. Вот результаты, которые вы получите, указав атрибут размера :

Это размер 1.

Это размер 2.

Это размер 3.

Это размер 4.

Это размер 5.

Размер 6.

Размер 7.

Чтобы применить выбранный размер шрифта, просто введите пару атрибут-значение:

размер=" размер шрифта "

…в тег , где размер шрифта равно любому числу от 1 до 7. выглядеть так.

Другой способ указать размер текста — ввести число от 1 до 4, которое либо прибавляется, либо вычитается из размера базового шрифта . При отсутствии basefont , по умолчанию basefont имеет размер 3. Вводя значение «+1» для атрибута размера , вы указываете, что ваш текст будет отображаться на один размер больше, что соответствует размеру 4. Аналогичным образом значение «+2» соответствует размеру шрифта 5. В другом направлении значение «-1» соответствует размеру 2, а «-2» соответствует размеру 1 (размер базового шрифта 3–2 = размер шрифта 1).

Многие редакторы WSYIWYG создают исходный код, используя эту систему размера шрифта. Это должно помочь объяснить ситуацию, если вы когда-нибудь решите взглянуть на исходный код при использовании редактора WYSIWYG и впоследствии задаетесь вопросом, что означают все эти «+2» и «-1».

Еще один способ определить размер текста на веб-странице — использовать элементы стиля шрифта big и small . Эта система работает очень похоже на систему size=±1 в том смысле, что использование одного набора из ... тегов соответствует увеличению на один размер при использовании одного набора из ... тегов соответствует на один размер меньше.

Следовательно, если вы начинаете с пустой веб-страницы, еще не применяя форматирование (размер базового шрифта по умолчанию 3), следующие три примера дадут идентичные результаты:

size="4" >Как всегда. ..


size="+1" >Как всегда…< /font>


Все как всегда...

Вложение пары тегов ... один в другой и использование этого для форматирования текста имеет тот же эффект, что и рендеринг текста на два размера больше или, по сути, использование size="+2" Пара атрибут-значение с элементом шрифта .

Таким образом, следующие три примера дадут одинаковые результаты:

size="5" >Три одинаковые по очереди.


size="+ 2" >Три одинаковых снова.


Три одинаковых снова.


Многие редакторы WYSIWYG также используют эту систему размеров шрифта big/small . Это один из недостатков использования этих программ веб-разработки «мгновенного пирога». Иногда они могут создавать очень раздутый и беспорядочный исходный код. Используя одну из этих программ, когда пользователь выделяет текст, который он хочет сделать очень большим, а затем четыре раза щелкает кнопку сделать текст больше (довольно часто обозначается кнопкой a+ в пользовательском интерфейсе), результирующий исходный код будет выглядеть так:

Ваш действительно большой текст.

Это делается намного проще, если просто ввести:

Ваш действительно большой текст.

Еще более нелепый сценарий возникает, когда пользователь WYSIWYG выделяет некоторый текст, который он хотел бы увеличить, а затем, например, трижды щелкает на кнопке make-text-larger , но затем передумал и решил, что ранее набранный текст был бы лучше в исходном размере. Затем — часто не осознавая, что он на самом деле создает за кулисами в исходном коде — он возвращается, выделяет этот текст и трижды щелкает кнопку сделать текст меньше , создавая кучу исходного кода, который является полным пустая трата места:

<большой><большой><большой><маленький><маленький><маленький> К этому тексту не будет применен размер.. ...хотя этот текст будет иметь размер 6.

Это то же самое, что просто написать:

К этому тексту не будет применен размер... ...в то время как этот текст будет иметь размер 6.

Однажды вы попытались отладить веб-страницу, набитую до отказа таким бесполезным исходным кодом а-ля и так далее, до тошноты, вы можете задуматься о том, насколько «простыми» на самом деле являются некоторые WYSIWYG-редакторы.

Итак, какой размер текста следует использовать? Это отчасти вопрос вкуса, отчасти вопрос необходимости, а также может зависеть от того, какой стиль шрифта вы используете.

Слишком мелкий текст может быть трудным, а иногда даже нечитаемым (Arial size=»1″).

С другой стороны, слишком большой текст может иметь эффект «крика». Это может отвлечь зрителей от вашей веб-страницы, особенно если вся страница заполнена таким текстом (Arial size=»6″).

Большинство авторов веб-страниц, как правило, используют размер от 3 до 5 для обычного чтения (в зависимости от стиля шрифта), но могут увеличить размер шрифта для заголовков и заголовков.

Теперь давайте перейдем к изучению того, как установить стиль шрифта на вашей веб-странице…

См. также:

  • Что такое веб-хостинг?
  • Как создать веб-страницу

Почему никогда не следует использовать px для установки размера шрифта в CSS

Опубликовано: 28 октября 2022 г.
Обновлено: 11 ноября 2022 г.

Простите кликбейтный заголовок; «никогда» — сильно сказано, но это важная и малоизученная тема.

В сфере веб-разработки бытует довольно много заблуждений, которые сохраняются независимо от того, как часто их опровергают. «Внешние ссылки всегда должны открываться в новых вкладках» — хороший пример. CSS Tricks довольно подробно рассмотрели это здесь почти десять лет назад (tl; dr: в основном неверно), но, похоже, в некоторых уголках это все еще сохраняется.

Показательный пример: идея о том, что нет функциональной разницы между px и em или rem единиц в CSS. Это заблуждение, которое я слышу снова и снова, поэтому я решил рассмотреть его здесь, в посте.

Давайте будем предельно ясны: абсолютно не имеет значения, какую единицу измерения вы используете в своем CSS. И вам следует избегать px при установке размера шрифта везде, где это возможно.

Еще раз: «всегда» — сильно сказано и немного догматично. Но правда в том, что если вы выберете неправильную единицу измерения, вы рискуете переопределить предпочтения ваших пользователей, что затруднит (возможно, даже сделает невозможным) использование ими вашего веб-сайта, и потенциально могут нанести вред дизайну с непреднамеренными визуальными побочными эффектами.

О каких юнитах идет речь и что они делают?

Прежде чем мы перейдем к , почему мы должны избегать px вместо font-size , давайте убедимся, что мы все ясно понимаем, о каких единицах мы говорим, и как они ведут себя в целом.

пикселей

пикселей — это сокращение от пикселя… хотя в большинстве случаев это уже не буквально пикселя. Это использовал , когда дисплеи имели тенденцию быть довольно предсказуемым соотношением пикселей с низким разрешением, например 1024×768. В те дни 1px обычно равнялись одному фактическому пикселю на физическом экране.

Экраны отображают изображения с помощью сетки цветных огней, называемых пикселями. Один пиксель — это один цветной свет на дисплее; наименьшая возможная «точка», которую аппаратное обеспечение способно отображать. Это то, что я имею в виду под «буквальными», «реальными» или «устройственными» пикселями в этом разделе; пиксель в физическом мире.

Однако, когда появились экраны с высоким разрешением (иногда называемые «ретина»), и устройства начали упаковывать больше пикселей в меньшее пространство, эти физические пиксели устройства стали сверхмалыми . Просматривая веб-страницы на экране с высоким разрешением, было бы крайне сложно что-либо прочитать, если бы 1px в CSS по-прежнему соответствовало одному буквальному пикселю устройства, поскольку сами пиксели быстро уменьшались. В конце концов, современные смартфоны имеют разрешение даже выше, чем HD-телевизоры.

Вместо этого браузеры на дисплеях с высоким разрешением масштабируют то, что они показывают (увеличивают, более или менее), так что веб-страницы не становятся неразборчиво маленькими. Изображения и тому подобное по-прежнему могут отображаться во всей своей красе в высоком разрешении, но размер текста и других элементов увеличен, чтобы сохранить читаемость.

Итак, в наши дни 1px обычно соответствует размеру увеличенного, «увеличенного» пикселя, а не буквального пикселя на реальном оборудовании. Что-то 1px в нашем CSS, вероятно, будет занимать несколько физических аппаратных пикселей, и у нас нет никакого способа в чистом CSS указать буквальный пиксель устройства. Но это нормально, потому что они, как правило, слишком малы, чтобы мы могли с ними связываться.

Пример: пиксели на iPhone 14 Pro настолько микроскопичны, что 16 пикселей в буквальных пикселях устройства будут примерно размером печатного шрифта при размере шрифта 2pt. Хорошо, что браузеры масштабируют их для нас!

Большая часть из этого не очень важна в контексте этого обсуждения, но я думаю, что это все равно полезно знать. Важная часть: 1px равно тому, что браузер считает одним пикселем (даже если это не буквально пиксель на аппаратном экране).

em и рем

Это приводит нас к em и rem , которые похожи друг на друга. Чтобы продолжить с , не совсем релевантные, но все же интересные мелочи : «em» — это типографский термин, который на самом деле появился на много десятилетий раньше, чем компьютеры. Типографически один em равен текущему размеру шрифта.

Если у вас установлен размер шрифта 32pt («pt» — это pt , еще один старый типографский термин, который все еще иногда используется), то 1em — это 32pt. Если текущий размер шрифта 20px , то 1em = 20px (но опять же : вы не должны устанавливать размеры шрифта в пикселях — это просто для примера ).

В Интернете размер шрифта по умолчанию составляет 16 пикселей . Некоторые пользователи никогда не меняют это значение по умолчанию, но многие это делают. Но по умолчанию, по крайней мере, 1em и 1rem оба будут равны 16px .

Em первоначально относился к ширине символа «M», откуда и произошло название. Но теперь это относится к текущему размеру шрифта, а не к размерам конкретного глифа.

Разница между
em и рем

Чтобы различать их: 1rem всегда равно размеру шрифта браузера или, точнее, размеру шрифта элемент html . rem означает «root em», а корнем веб-страницы является тег . Итак, 1rem = любой размер шрифта документа. (Что, опять же, по умолчанию равно 16px , но может быть переопределено пользователем.)

em , с другой стороны, это размер шрифта текущего элемента . Возьмите следующий CSS:

  .контейнер {
  размер шрифта: 200%;
}
п {
  размер шрифта: 1em;
}  

Учитывая приведенный выше CSS, параграфы внутри элемента .container будут в два раза больше. Это потому, что 1em означает «текущий размер шрифта», а внутри . container это 200%. 1em × 200% = 2em ( 32px по умолчанию).

Абзацы вне элемента .container , тем не менее, по-прежнему будут иметь нормальный размер шрифта 1em ( 16px по умолчанию).

Если бы мы изменили em на rem в приведенном выше CSS, то все теги абзаца всегда были бы размером шрифта браузера по умолчанию, независимо от того, где они были.

размер шрифта: 1em эквивалентно размер шрифта: 100% .

em и % единицы не всегда эквивалентны в других контекстах; например, ширина : 1em и ширина : 100% , скорее всего, будут очень разными, поскольку в этом случае процент основан на ширине родительского контейнера, а не на размере его шрифта. Но % и em совпадают в том, что касается свойства font-size .

Итак, подытожим:

  • 1em размер шрифта текущего элемента
  • 1rem (root em) — это размер шрифта документа (т. е. браузера)

Хорошо; вот что означают единицы и откуда они берутся. Итак, теперь давайте ответим, почему так важно, что мы используем.

Почему все это имеет значение

Опять же, распространенное заблуждение: поскольку 1em равно 16px , в любом случае не имеет значения, какую единицу измерения вы выберете. И это кажется логичным ; если 16px = 1rem , то какое значение имеет способ ввода?

Помните, em и rem являются относительными ; по умолчанию они оба (в конечном счете) основаны на размере шрифта браузера.

px , однако, это не так; это просто статическое значение, которое не основано ни на чем другом и не зависит от него.

2rem — удвоенный размер шрифта браузера; 0. 5rem это половина и так далее. Таким образом, когда или если пользователь изменит свой предпочтительный размер шрифта, если вы используете em и rem , весь текст на вашем веб-сайте изменится соответствующим образом, как и должно быть. 2rem по-прежнему вдвое больше размера шрифта; 0.5рем еще половина.

Напротив, значения пикселей являются статическими . 20px это просто 20px независимо от размера шрифта контейнера, браузера или пользователя. Независимо от того, насколько большими или маленькими могут быть настройки шрифта пользователя, когда вы устанавливаете значение в статических пикселях, оно стирает этот выбор и переопределяет его точным значением, которое вы указали.

Критично, это означает, что если ваша таблица стилей использует px для установки размера шрифта в любом месте, любой текст, основанный на этом значении, будет невозможно изменить для пользователя .

эм и rem work с размером пользовательского шрифта;  пикс.  полностью переопределяет его.

Это очень плохо. Он недоступен и может даже помешать кому-то вообще использовать сайт.

Таким образом, хотя могут быть некоторые допустимые варианты использования для такого поведения, это определенно не то, что вы хотите по умолчанию.

Это также очень веская причина избегать единиц измерения окна просмотра, таких как vw или vh , при установке размера шрифта. Они также статичны и не могут быть изменены пользователем.

При наиболее может быть приемлемым значение вроде calc(1rem + 1vw) , так как оно все еще содержит rem в качестве базы. Однако даже в этом случае я бы рекомендовал использовать clip() или медиа-запросы для установки минимального и максимального значений, поскольку размеры экрана часто выходят далеко за рамки того, что мы могли бы ожидать или тестировать.

Различия помимо размера шрифта

Хорошо, теперь давайте поговорим о том, как меняются px и em / rem , даже когда нам 9 лет.0233, а не , относящийся конкретно к свойству font-size .

Разработчики обычно тестируют, увеличивая или уменьшая масштаб страницы, и я думаю, что именно отсюда происходит неправильное представление, лежащее в основе этого поста. При масштабировании все увеличивается (или уменьшается), и в этом случае выбор px или em / rem в качестве единицы CSS обычно не имеет значения. Оба ведут себя одинаково, что касается масштабирования. И большинство разработчиков с хорошим зрением, вероятно, не поймут, что это еще не все. Однако самое сложное:

Даже за пределами font-size , px не ведет себя так же, как em и rem .

px единиц по-прежнему привязаны к масштабированному значению пикселей на экране. Однако em и rem привязаны к размеру шрифта документа , а , а не к масштабу или масштабу страницы.

Для демонстрации взгляните на этот CodePen:

См. «Перо без названия» Джоша Коллинсворта (@collinsworth) на КодПене.

У нас есть несколько абзацев, каждый с границей 2px внизу и полем 20px между ними. Обратите внимание, мы используем пикселей единиц для обоих.

Если вы увеличиваете или уменьшаете масштаб, размер и расстояние между элементами остаются относительными . То есть: чем больше вы увеличиваете масштаб, тем толще становится эта линия и тем больше становится расстояние между абзацами.

Чтобы избавить вас от хлопот, вот скриншот, показывающий то же перо с увеличением 400%. Текст, строка и интервал равны 9.0485 все В 4 раза больше; они остаются одинакового размера относительно друг друга:

Когда дело доходит до увеличения и уменьшения, нет реальной разницы между px и em или rem . Но масштабирование — не единственный способ, с помощью которого пользователи делают веб-сайты более удобными для себя.

Как упоминалось ранее, пользователи могут и указать размер шрифта по умолчанию и/или минимальный размер. И когда они делают , — это то место, где функциональность начинает расходиться.

На снимке экрана ниже я установил размер шрифта Firefox по умолчанию на 64px . Посмотрите:

Сравните текст на скриншоте с текстом над ним. Обратите внимание, что на этот раз линии толще на 90 233, а не на 90 234, а поля между абзацами увеличились на 90 233, а не на 90 234 пропорционально. Только сам текст больше. Поскольку ширина границы и поля были установлены на пикселей , они остаются такими, как были, и не масштабируются.

Однако вы заметите, что если вы измените px в CSS на эквивалентные значения rem , линии и интервал сделают больше!

Все это означает, что есть важные, реалистичные дизайнерские причины для выбора px вместо em и rem или наоборот.

Подведем итог:

  • пикселей значения делают не масштабируются вверх или вниз, когда пользователь меняет размер шрифта
  • em и rem значения сделать настроить пропорционально размеру шрифта

Если вам нужна интерактивная демонстрация, которая связывает все это воедино, ознакомьтесь с этим окончательным CodePen; отрегулируйте ползунок вверху, чтобы увидеть, как изменение размера шрифта документа влияет на различные элементы в зависимости от используемого ими модуля CSS.

See the Pen Разница между px и rem в масштабировании шрифта Джош Коллинсворт (@collinsworth) на КодПене.

Что выбрать

Итак, зная, что em и rem будут масштабироваться по отношению к размеру шрифта, но значения px будут , а не , что мы оставляем? Должны ли мы просто никогда не использовать пикселей для что-нибудь !?

Хотя я думаю, что вы, вероятно, согласитесь пойти по этому пути, если вы того пожелаете, я все же думаю, что есть место для px .

Поскольку мы знаем, что пикселей значения не будут меняются, когда и если пользователь регулирует размер шрифта, это означает, что единицы пикселей на самом деле являются отличным выбором для некоторых эстетических элементов. Может быть, у нас есть определенный интервал, и мы бы не хотели, чтобы 90 233 90 234 становились больше, когда размер шрифта больше. (Если по умолчанию это большой блок отрицательного пространства, возможно, не имеет смысла позволять ему масштабироваться до еще более массивного размера.)

Может быть, есть размеры границ, которые мы не хотели бы менять, или, может быть, на странице есть декоративные элементы, созданные с помощью CSS, которые не будут хорошо работать при большем размере только потому, что шрифт больше. Возможно, мы не хотим, чтобы отступы увеличивались, как размер шрифта. px по-прежнему является хорошим выбором во всех этих случаях.

Лично я: Я бы рекомендовал ставить все размеры с помощью rem . Я добавляю em только там, где хочу, чтобы что-то было пропорционально текущему размеру шрифта (например, значок рядом с текстом, который должен быть точно такой же высоты, как символы, и на полсимвола сбоку). Я бы нигде не использовал px , кроме элементов дизайна, которые я явно не хотел масштабировать с размером шрифта.

Но еще раз, если вы что-то уберете из этого поста:

Никогда не устанавливайте font-size в пикселей единиц — по крайней мере, если вы не уверены в том, что делаете, как он будет себя вести и будет ли он по-прежнему доступен, когда вы это сделаете.

Важное примечание о медиа-запросах

Это запоздалое дополнение к этому сообщению, но: важно избегать px в запросах @media по тем же причинам, что и выше; он будет работать нормально, когда пользователь увеличивает масштаб, но медиа-запрос, использующий px подведет пользователей, если они самостоятельно установят больший размер шрифта.

  @media (минимальная ширина: 800 пикселей) {
  /* Изменение размера шрифта НЕ влияет на эту точку останова */
}
@media (минимальная ширина: 50 бэр) {
  /* Изменение размера шрифта ДЕЙСТВИТЕЛЬНО влияет на эту точку останова */
}  

Это связано с тем, что по мере увеличения размера шрифта 50rem становится другим значением в зависимости от этого предпочтения, а 800px — нет.

Скорее всего, когда мы пишем CSS для больших точек останова, мы считаем само собой разумеющимся, что на экране достаточно места для распространения элементов. Это может быть не так, если пользователь установил очень большой размер шрифта, и установка наших медиа-запросов в rem вместо px помогает нам избежать этого предположения и реагировать на предпочтения пользователя.

Я столкнулся с этой проблемой на этом же сайте; Я устанавливал все свои контрольные точки на px . Однако, когда я увеличил размер шрифта по умолчанию, мои медиа-запросы не отвечали, поскольку они по-прежнему рассматривали только ширину экрана в пикселях. Так что у меня все еще была крошечная боковая панель с огромным текстом, неразборчиво разбитым внутри нее, так как я не учитывал предпочтения пользователя. я поменял на rem сразу после этого, и это решило проблему.

Итак, вкратце: избегайте использования px и в медиа-запросах, если только вы не уверены, что знаете, что делаете, и как это повлияет на пользователей, которые устанавливают собственный размер шрифта в браузере.

Последнее слово о доступности

Рекомендации

по доступности обычно предусматривают, что веб-приложения можно использовать только при масштабе до 200 % и/или размере шрифта. Вы заметите, что приведенные выше демонстрации выходят далеко за рамки этого.

Это отчасти просто для контраста, но важно отметить, что многие пользователи также пойдут гораздо дальше, если того диктуют их потребности и предпочтения. Человек с плохим зрением не остановится на 200%, если это ему не поможет. Мы должны сделать все возможное, чтобы включить их, создавая наши сайты и приложения, чтобы они были удобочитаемыми и работоспособными, несмотря ни на что.

Я слышал, как некоторые технические специалисты утверждают, что их пользователи молоды и/или технически подкованы, поэтому люди, которым нужны большие размеры шрифта, не входят в их аудиторию, и поэтому их не нужно рассматривать. Но я хотел бы подчеркнуть, что это неправильно, самонадеянно и, откровенно говоря, абейлистски.

Несмотря на присущий этому аргументу эйджизм, потребности различаются даже среди молодых людей. Инвалидность не имеет возрастного порога. Я лично знаю кого-то в возрасте 30 лет, работающего разработчиком на полную ставку (т. е. достаточно молодого и технически подкованного), который из-за своего видения должен установить минимальный размер шрифта значительно выше стандартного. Веб-сайты и приложения для них регулярно ломаются, иногда до такой степени, что становятся непригодными для использования, потому что разработчики не учитывают их нужды.

Я назвал это всем, чтобы подчеркнуть важность тестирования пользовательских интерфейсов, как это могли бы сделать наши пользователи.

Автор записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *