Смещение длинных страниц в FireFox при появлении полосы прокрутки - PullRequest
12 голосов
/ 22 ноября 2008

В Firefox и Safari страницы, центрированные по размеру, сдвигаются на несколько пикселей, когда страница достаточно длинна для появления полосы прокрутки. Если вы перемещаетесь по сайту с длинными и короткими страницами, кажется, что страница «перепрыгивает».

IE7 имеет тенденцию постоянно оставлять полосу прокрутки видимой, но отключает ее, когда страница недостаточно длинна. Поскольку ширина окна HTML никогда не меняется, центрирование страницы не меняется.

Есть ли обходной путь или способ стилизации страницы, чтобы она не прыгала в Firefox и Safari?

Спасибо.

Ответы [ 2 ]

13 голосов
/ 22 ноября 2008

Вы всегда можете просто включить полосу прокрутки:

html{
 overflow: scroll;
}

но это также даст вам горизонтальную полосу прокрутки, это лучше:

html{
   overflow-y:scroll;
   overflow-x:auto;
}

Это даст вам только вертикальную прокрутку и горизонтальную при необходимости.

2 голосов
/ 20 июня 2011

Этот сайт содержит JavaScript для решения проблемы, которая является лучшим решением IMO, чем текущая (постоянная полоса прокрутки):

http://www.johnpezzetti.com/2011/01/31/removing-vertical-scrollbar-jump-shift-problem-a-javascript-fix-for-all-browsers

Этот скрипт ожидает загрузки DOM, затем проверяет, активна ли полоса прокрутки. Если это так, вычисляет ширину полосы прокрутки и устанавливает значение marginLeft для тела равным этой ширине. Это смещает смещение, и, поскольку оно работает при загрузке DOM, оно мгновенно действует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...