Определяемый пользователем размер шрифта определяет базовый размер шрифта корневого элемента html
.Начальное значение font-size
, как указано в CSS, равно medium
, что во всех браузерах настольных компьютеров соответствует этому определяемому пользователем размеру (кроме Microsoft Edge, который использует Windows DPI и настройки доступности, а не имеет свои собственные).Мобильные браузеры, к сожалению, не удовлетворяют общесистемным предпочтениям, типичным для мобильных устройств.По крайней мере, ни один из Safari на iOS, Internet Explorer на Windows Phone 8.1 или Microsoft Edge на Windows 10 Mobile не делает.
Все остальные значения ключевых слов свойства font-size
, определенные здесь , масштабируютсядо этого размера, поэтому, если пользовательский размер равен 20px, medium
соответствует 20px, а small
почти наверняка будет соответствовать размеру, меньшему 20px.
Медиа-запросы rems и ems вычисляются напрямуюэтого определенного пользователем размера, независимо от указанного свойства font-size
корневого элемента.Каждое из следующих мультимедийных выражений:
(max-width: 30rem)
(max-width: 30em)
эквивалентно (max-width: 480px)
, когда пользовательский размер равен 16px, и (max-width: 600px)
, когда пользовательский размер равен 20px.
С другой стороны, правила правил стиля рассчитываются исходя из указанного font-size
корневого элемента.Следующее правило:
:root { font-size: 50%; }
делает 1rem в правиле стиля эквивалентным 8px, если пользовательский размер равен 16px, и 10px, если пользовательский размер равен 20px.
Правило стиляЭмс и проценты всегда рассчитываются относительно элементов-предков, поэтому их поведение не меняется.Если размер шрифта body
объявлен в ems или процентах, то он будет основан, например, на размере шрифта html
(его родитель).И так далее и тому подобное для всех его потомков, которые не указывают какой-либо другой размер.
Единица px
соответствует пикселю CSS, и поэтому на ее метрики никогда не влияет размер шрифта, определенный пользователем.
Поведение единиц просмотра и calc()
не меняется, поскольку ни одна из этих вещей не зависит от размера шрифта элемента.Как следует из их названия, единицы размера окна просмотра масштабируются до размера окна просмотра.
Наиболее заметный общий эффект, который это может оказать на макет, размеры которого всего (включая ширину и высоту блоков) вРемс и Эмс, это то, что пользователь может масштабировать весь макет, просто изменив свой предпочтительный размер шрифта.Я не знаю, насколько это полезно, особенно когда масштабирование имеет значение.
Итак, чтобы ваша копия могла соответствовать предпочтительному размеру шрифта пользователя, не заставляя его увеличивать, укажите весь свой шрифт.Размеры в Римах или EMS, где это возможно.Особенно не указывайте размер шрифта в пикселях на html
, так как это полностью переопределит предпочтение.Вам не обязательно указывать ширину и высоту в rems или ems - это действительно зависит от вашего макета.Не все макеты жидкостей хорошо масштабируются при разных размерах.На самом деле наиболее важным аспектом этого является размер текста, поскольку эта функция предназначена для масштабирования текста для улучшения читабельности.