Константин Громов: ну вообще да, можно придумывать различные обходы данной проблемы, но в результате она возникает не тут, а где-то ещё. И честно говоря меня этот баг уже задолбал.
Константин Громов: то есть выходит что при вынесение на отдельный gpu значение vw и vh округляется в большую сторону всегда, а обычные элементы округляются до ближайшего значения.. Из вот из за этого и возникает проблема...
Константин Громов: не, боюсь это не реально. Баг довольно редко возникает и только при очень определённых обстоятельствах. Воспроизвести сложно. Но я почти на 100% уверен, что знаю из за чего он. Баг возникает, когда слой заданный в vh или vw переходит на собственный gpu слой. Например во время анимации. И собственно говоря видимо на gpu эти размерности просчитываются иначе (к примеру округляются в другую сторону). Так что работа с px
и просчётом на js точно решает эту проблему (в скрипте я уж точно смогу всё округлить как надо), а "n px" и в Африке "n px".
Александр Фёдорцев: да мне тут честно говоря толком то даже никто и не объяснил почему вдруг должно тормозить. Это SPA, то бишь просчёт будет выполняться всего лишь один раз за сеанс и всё)) Ну хоть убей, не понимаю почему должно тормозить. Это от силы лишних 100ms при запуске, а дальше никаких проблем. Никаких relayout'ов не будет, с чего бы им быть. Перепросчётов при появлении новых элементов никаких не предполагается.
dinegnet: Вы уж выбирайте. "Фикс на тяп-ляп" или "нет другого выхода". Я другой выход уже год ищу параллельно с разработкой. Постоянно думаю на эту тему.
dinegnet: Через пару тройку лет возможно я просто уберу этот скрипт и верну vh, vw, т. к. кое-кто наконец-то нормально пофиксит chrome... (надеюсь). Не вижу серьёзных проблем в этом плане.
Да и проект предполагает неплохой профит. Думаю поддержка более чем окупится.
Николай: эм, мне кажется вы не понимаете мой вариант решения проблемы. Я просто беру за основу ширину окна (при загрузке сайта/при изменение размера окна) и только в зависимости от него просчитываю style блок с размерами абсолютно всех элементов на сайте. Когда на сайте будет что-то изменяться стили не будут просчитываться заново и из DOM ничего запрашиваться тоже не будет. Все просчёты будут исключительно при запуске и при изменение окна. Всё.
dinegnet: проект я разрабатываю для себя, ни на кого не работаю. Времени у меня много. Я готов протестировать и отладить сайт на всех популярных устройствах. В общем спешки никакой нет и реализую я этот вариант более чем работоспособно, в этом я уверен. Хотя честно говоря не вижу каких либо предпосылок чтобы на retina экранах что-то не работало.
К такому решению приходил очень долго. Около года. Если делать несколько брейкпоинтов, даже достаточно много, то на специфических разрешениях будет не так как хотелось бы.
А вот в зоопарке разрешений и размеров экранов не вижу серьёзных проблем. Естественно я отдельно учту планшеты и телефоны. То есть я уверен, что на всех устройствах всё будет выглядеть правильно.
То есть я готов искать другое решение, но только при таком варианте судя по всему всё будет выглядеть именно так как надо.
Почему же дико тормозить? Неужели просчёт всего DOM это не проблема для всяких vue.js, react и т. д., а просчёт нескольких сотен css кода внезапно становится большой проблемой? Это же будет происходить лишь при запуске игры, 1 раз. Сразу все стили.
Андрей Б.: представьте себе интерфейс компьютерной игры. Там как раз таки практически всегда применяется описанный мной подход к дизайну интерфейса. Не в техническом плане, а в том, что интерфейс полностью резиновый, а не "адаптивный". Так почему бы не применять такой подходит и в веб дизайне. Тем более, что у меня не новостной сайт. А SPA - браузерная игра.
Андрей Б.: vue при том что сайт будет рендериться на стороне пользователя и не будет такой фигни, что сайт сначала загрузится с одними размерами, а потом размеры пересчитаются и всё перескочит, что крайне неприятно выглядит. То есть можно будет совместить рендер самого DOM с рендерингом стилей размеров элементов.
Андрей Б.: это да, но если нужно сделать абсолютно все зависящим от ширины окна, то приходится использовать vw, процентами тут не отделаешься. А vw в свою очередь порождает множество неприятных багов.