Куда прописывать font-size, если будет использоваться rem?
Допустим, что шрифт документа 24px. Для других элементов я хочу задать шрифт относительно этих 24px.
По классике или как там ещё писали бест практис, как я понял, фонт сайз и тп прописывается в body.
В моем случае, чтобы работал rem, придется font-size: 24px прописывать в html.
Это ок или нет?
htmlclassic, по умолчанию для body user agent не задает свойство font-size. Так как свойство наследуемое, то оно примет значение inherit.
Поэтому достаточно просто указать размер шрифта для корневого элемента (:root или html)
htmlclassic, от боди наследуются все размеры шрифтов, если они будут заданы в рем относительно 1рем, который у боди. Тогда достаточно будет при необходимости поменять у html размер в пикселях и все шрифты поменяют размер. Например при разрешении экрана выше 1920 или ниже скажем 768. Это же основы
htmlclassic, вообще для управления размером шрифта используются em. Rem это компенсатор em. Rem зависит от размера шрифта html. Em от размера шрифта body. При создании адаптивных элементов, для размера шрифта, паддингов, бордер радиусов, теней используются em. Значение em переопределяется внутри элемента. Например если для элемента вы пропишете font-size: 1.5em; padding: 1em. То реальный padding будет равен не 24px как вы прописали в body, а будет рассчитываться из размера шрифта элемента - 1em*1.5 em = 36px. А rem используются в случаях когда нужен статичный размер, например для боковых паддингов когда надо выровнять отступ в блоках текста с разным размером шрифтов. Rem не переопределяется внутри элемента.
То есть надо понимать что rem и em единицы служат не только для управления размером шрифта как таковым, а для создания адаптивных медиа. В которых все размеры зависят от размера шрифта. Такой подход позволяет сильно сократить количество кода в точках остановки и получить более пропорциональный внешний вид элемента. Вместо изменения кучи свойств в точке остановки, в объекте достаточно изменить font-size и все его размеры пропорционально изменятся
htmlclassic, Потому что относительные абсолютные размеры фиксированы. И в результате не работает настройка браузера "Размер шрифта".
Многие сайты этим грешат, даже Хабр.
Вот у меня выставлен в браузере крупный шрифт (я плохо вижу). А Хабру пофиг на это. Он все равно отображает текст шрифтом 15. Приходится масштабировать, а это уже совсем другое поведение.
Причем здесь на хабре для html шрифт не задан (100% по дефолту) и в инспекторе видно, что базовый размер в моем случае увеличился до 20px, но для body какого-то черта прописан абсолютный размер в 15 пикселей.