Старая тема, но я думаю, что нужна дополнительная ясность.
И em
, и rem
являются относительными единицами, но rem
означает всегда относительно размера шрифта html
(«корневой» элемент), а не унаследованного размера шрифта.
Никогда не используйте px
или pt
в этом отношении на экране. Путем жесткого кодирования размера шрифта вы игнорируете персональные предпочтительные настройки шрифта пользователя и делаете масштабирование менее удобным.
И em
, и rem
играют полезную роль. Ни один не идеален на все случаи жизни. Вот несколько примеров:
Используйте rem
, чтобы избежать смешивания размеров:
ul#something li { font-size: 1.2rem; }
… or …
ul#something li { font-size: 1.2rem; }
Первый приведет к тому, что вложенные списки будут постепенно увеличиваться на размера , поскольку модуль em
будет наследоваться от родительского элемента li
.
Используйте rem
для установки размеров независимо :
article { font-size: .8rem; } /* article base font size */
article>h2 { font-size: 2rem; } /* … except for h2 */
И, конечно, вы можете использовать оба:
div#something { font-size: 1.2rem; } /* based on html size */
div#something>h2 { font-size: 2em; } /* based on div#something */
Два года спустя, и мы можем использовать его, не обращая внимания на устаревшие браузеры.