Какие могут быть подводные камни при верстке в REM c шрифтом HTML в VW?
Подскажите какие могут быть подводные камни при верстке адаптивного сайта с применением величины REM вместо px.
Например:
Я задаю размер шрифта html
html {font-size: 0.6944vw} /* 1rem = 10px на ширине экрана 1440px */ |
html {font-size: 0.6944vw} /* 1rem = 10px на ширине экрана 1440px */
Далее всем шрифтам и элементам я указываю размеры в rem исходя из формулы 1rem = 10px соответсвенно если ширина блока 200px я ему ставлю 20rem.
Это удобно так как можно скейлить пропорционально интерфейс от большого экрана к малому, но я заметил, что например сайты банков сверстаны в px, это сделано, чтобы размер шрифта был всегда один на любом разрешении экрана, но зачем?
Вот пример сайта сверстанного мной по технологии, что я пишу выше:
https://bittraffic.webflow.io/
Интересуют минусы этого подхода и проблемы с которыми можно каким либо образом столкнуться
Дополнительно:
Подслеповатые пользователи (вроде меня) будут вас нелюбить потому что невозможно увеличить размер шрифта стандартным масштабированием страницы.
Ответы:
Классическая реализация этого подхода предполагает, что есть CSS шлюз, ограничивающий минимальный/максимальный размер шрифта для минимального/максимального размера экрана, и логика дизайна явно завязана на размер шрифта. Как в мире, где люди печатают разные штуки на бумаге. Плюс альтернативные единицы измерения - vw, vmax, проценты - если нужно. Это помогает сохранить в верстке логику дизайна в явном виде. Используя искусственную логику 1rem = 10px, и rem не в значении "базовый размер шрифта", а просто как костыль для адаптивности, вы упрощаете изначальные подсчеты, но в верстке получается гора рандомных дробных значений, которые не пойми что обозначают. Тут нужно либо подгонять все под 10px сетку, что не всегда уместно, либо по мере усложнения интерфейса это все превратится в такую кашу, что врагу не пожелаешь. Собственно это возвращает нас к изначальной проблеме верстки в пикселях. Куча магических значений и никакой логики в коде. Это главный недостаток вашего способа приготовления rem.
Вторая проблема, более общая - округление значений. При изменении размера экрана будут появляться дробные размеры всего. Они будут округляться до целого количества пикселей. При этом у нас есть много ситуаций, когда разные браузеры будут округлять по-разному, или просто не туда, куда мы ожидаем. Появляются разные артефакты. В модных сайтах, где в дизайне много негативного пространства, мы можем этого не заметить, но в тесных интерфейсах кроваво-энтерпрайзных приложений это быстро станет проблемой. Там пиксели = надежность и предсказуемость.
- это как пример, можно использовать и не дробные значение привязав 1rem = 1px на разрешении 1440, тогда 200px = 200rem, но вот с округлением да, я согласен, я часто наблюдал когда ты ставишь например размер элемента в 1px в rem то на разных браузерах он округляется либо до .5px либо до 1 и соответственно выглядит не пропорционально, но это наблюдается только в старых браузерах. Актуальные версии браузеров работают адекватно с округлением до десятых пикселя
-
это как пример, можно использовать и не дробные значение привязав 1rem = 1px
Это не поможет получить логику дизайна в коде. Логика - в явных взаимосвязях между сущностями в дизайне, а не в пикселях. Если элемент по логике должен быть в два раза больше базового размера шрифта, то это должно быть явное 2rem в коде, а не какие-нибудь 266rem, потому что пойди пойми почему. В этом смысл.
Актуальные версии браузеров работают адекватно с округлением до десятых пикселя
Если бы. Добавьте в свою верстку больше трансформаций, анимаций, фильтров, SVG-картинок, и "актуальные" версии браузеров заиграют новыми красками. Да даже на вашем сайте в актуальном chrome я вижу, что декоративные линии, которые приходятся строго в углы элементов, местами съехали на 1-2px вверх/вниз относительно не менее актуального firefox.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
При верстке в REM с шрифтом HTML в VW могут возникнуть несколько подводных камней, которые стоит учитывать:
1. Единицы измерения: REM и VW имеют разные способы измерения размеров. REM измеряется относительно размера шрифта родительского элемента, тогда как VW измеряется относительно ширины окна просмотра. Поэтому при использовании REM с шрифтом в VW, необходимо тщательно контролировать размеры элементов и шрифтов, чтобы они отображались корректно на всех устройствах.
2. Масштабирование: При использовании VW для ширины элементов, необходимо учитывать, что они будут масштабироваться в зависимости от ширины окна просмотра. Это может привести к неожиданным результатам на разных устройствах с разными разрешениями экрана.
3. Кроссбраузерная совместимость: Некоторые браузеры могут не поддерживать REM и VW полностью или корректно, что может вызвать проблемы с отображением на определенных устройствах. Поэтому перед использованием этих единиц измерения, стоит убедиться, что они поддерживаются в целевых браузерах.
Пример использования REM с шрифтом в VW в HTML с помощью тега
: <pre lang="php"> html { font-size: 1rem; /* устанавливаем базовый размер шрифта */ } h1 { font-size: 2rem; /* устанавливаем размер шрифта заголовка */ } p { font-size: 1.5rem; /* устанавливаем размер шрифта абзаца */ } .container { width: 50vw; /* устанавливаем ширину контейнера в 50% ширины окна просмотра */ }
С учетом вышеуказанных подводных камней, следует внимательно планировать и тестировать верстку с использованием REM и VW, чтобы добиться желаемого внешнего вида и корректного отображения на всех устройствах.