Я придумал несколько решений и поместил их на пример веб-сайта здесь: https://dawaltconley.github.io/parallax-gap-fix/.
Кажется, что проблема возникает только с определенными полосами прокрутки системы Mac, которые появляются, когда пользователь подключает USB-мышь (как я их нашел) или меняет Show scroll bars
на Always
в своих настройках. Эта полоса прокрутки, в отличие от прозрачного трекпада, изменяет внутреннюю ширину элемента страницы параллакса, но не общий размер, в котором отображается трехмерное пространство для элементов параллакса.
Изменение свойств perspective-origin
и transform-origin
на left
перераспределяет элементы параллакса без изменения размера. Это было бы идеальным решением, за исключением того, что Safari, похоже, рассчитывает трехмерное пространство не так, как большинство современных браузеров, и ему нужно, чтобы эти свойства были установлены на center
для правильного выравнивания.
Лучшее решение, которое я нашел для всех браузеров, - добавить следующие элементы к элементу .parallax__group
:
.parallax__group {
margin-left: calc(100% - 100vw);
margin-right: calc(100% - 100vw);
padding-left: calc(100vw - 100%);
padding-right: calc(100vw - 100%);
}
Разница между 100vw
и 100%
от любого непосредственного потомка элемента .parallax
заключается в ширине полосы прокрутки. Установка отрицательного правого поля для этой ширины расширяет элементы параллакса до той же ширины, что и страница, удаляя зазор по краю экрана. Установка этого значения в левое поле растягивает элементы немного больше, чем необходимо, но это необходимо для выравнивания центра трехмерного пространства с центром остальной части страницы.
Должна быть возможность компенсировать это раздувание, применяя аналогичные правила к классу .parallax__layout
, но несоответствия в Safari затрудняют это, так как не раздутый элемент должен быть идеально выровнен , чтобы избежать пробелов в макете.
Кстати, это решение имеет то преимущество, что ничего не делает, когда проблемные полосы прокрутки отсутствуют. В этом случае нет никакой разницы между 100vw
и 100%
, поэтому вычисленный стиль идентичен стилю Киет Кларк.