Эта статья является частью нашей серии CSS AtoZ. Вы можете найти другие записи серии здесь .
Вы можете просмотреть полную транскрипцию и скринкаст для соответствующего видео о псевдоклассе :required
здесь .
Добро пожаловать в нашу серию AtoZ CSS! В этой серии я буду изучать различные значения CSS (и свойства), каждое из которых начинается с другой буквы алфавита. Мы знаем, что иногда скринкастов недостаточно, поэтому в этой статье мы добавили краткие советы по использованию значений rem
em
R для rem
em
В оригинальном видео со скринкастом мы узнали все о псевдоклассе :required
который полезен для оформления форм с полями, которые необходимо заполнить.
Несмотря на то, что формы, валидация и состояние стиля являются важными темами, мы не особо затронули тему :required
Итак, давайте посмотрим на пару быстрых советов по использованию единицы измерения rem
Но сначала давайте рассмотрим другой тип относительной единицы: em
Плюсы и минусы использования em
При работе над адаптивным проектом более гибко использовать относительные единицы измерения, такие как em
Это связано с тем, что эта единица измерения относится к размеру шрифта родительского элемента, что позволяет пропорционально увеличивать размер элемента, интервал и текстовое содержимое при изменении font-size
Использование этих относительных единиц позволяет построить систему пропорций, в которой изменение значений font-size
Система пропорций — это хорошо, но такое поведение em
Возьмите следующий фрагмент HTML:
<ul>
<li>lorem ipsum</li>
<li>dolor sit
<ol>
<li>lorem ipsum</li>
<li>lorem ipsum</li>
<li>lorem ipsum</li>
<li>lorem ipsum</li>
</ol>
</li>
</ul>
Этот вложенный список — не самая распространенная вещь в мире, но он может появиться на странице условий или в каком-либо другом формальном документе.
Если бы мы хотели, чтобы элементы списка выделялись, мы могли бы установить их font-size
16px
li {
font-size: 1.5em; /* 24px/16px */
}
Но это вызовет проблему с вложенным li
Вложенные элементы будут в 1,5 раза больше 24px
16px
В результате все вложенные элементы списка будут расти экспоненциально с каждым уровнем вложенности. Это, вероятно, не то, что задумал дизайнер!
Аналогичная проблема возникает с вложенными элементами и значениями em
Так что мы можем сделать вместо этого?
Используйте rem
Вместо риска увеличения или уменьшения font-size
Мы могли бы использовать пиксели, но относительные единицы более гибки в адаптивных проектах, как упоминалось ранее. Вместо этого мы можем использовать модуль rem
font-size
html
В документе .svg или .xml корневой элемент может отличаться, но эти типы документов здесь не являются нашей задачей.
Если мы используем rem
font-size
em
em
padding
Используйте Sass, чтобы помочь с поддержкой браузера rem
Модуль rem
Если вам нужно поддерживать IE8 (или ниже), вы можете использовать полизаполнение JS или предоставить запасной вариант px
li {
font-size: 24px;
font-size: 1.5rem;
}
Если вы используете Sass, вы можете создать миксин и функцию для расчета желаемого размера в rem
@function rem-calc($font-size, $base-font-size: 16) {
@return ($size/$base-font-size) *1rem;
}
@mixin rem-with-px-fallback($size, $property:font-size) {
#{$property}: $size * 1px;
#{$property}: rem-calc($size);
}
li {
@include rem-with-px-fallback(24);
}
Там у вас есть это. Пара быстрых советов по использованию rem
Если вы не используете их в своих текущих проектах, я определенно рекомендую попробовать.