Подтвердить что ты не робот

Полоса прокрутки Chrome исчезает (не переполняется-y)

Страница (live-version) состоит (примерно) из трех частей:

  • Левая панель
  • Центрированный контент
  • Правая боковая панель

Правая боковая панель должна быть прокручиваемой, поэтому я установил overflow-y: scroll; right: -17px;, чтобы просто скрыть полосу прокрутки. Body, html имеют overflow-y: auto;. Таким образом, мне не нужно иметь две полосы прокрутки (для страницы и для правой боковой панели).

ВОПРОС: (только в CHROME, проверены на версии 62 и 63)

По какой-то причине на разных машинах хром дает мне два разных стиля для полосы прокрутки: Case 1 и Случай 2.

В принципе, для case 1 панель прокрутки правой боковой панели "абсолютно позиционируется", и из-за этого страница скрывает 17px, а для case 2 полоса прокрутки "относительно позиционируется", и страница скрывает 17px, что занимает полоса прокрутки.

Вопрос

1) Почему полосы прокрутки отличаются в той же ОС и версии браузера, но разные машины?

2) Есть ли способ исправить это без каких-либо плагинов? Принимая во внимание, что пользователи Windows имеют case 2 и пользователи MacOS либо случай 1, либо 2?

4b9b3361

Ответ 1

1) Почему полосы прокрутки отличаются в той же ОС и версии браузера, но разные машины?

Это, вероятно, связано с системными настройками в macOS.

MacOS scroll bar Настройки ОС

Если вы выбрали Always, я уверен, что полоса прокрутки отталкивает содержимое страницы. То же самое, если у вас есть мышь. В противном случае у вас есть "абсолютно позиционированное" поведение, о котором вы говорили. Имейте в виду, что пользователи Windows, вероятно, будут видеть поведение, подобное Always.

2) Есть ли способ исправить это без каких-либо плагинов? Принимая во внимание пользователей Windows, пользователи 2 и MacOS имеют случай 1 или 2?

Ну, сначала немного мнение: я не думаю, что это хорошая идея, чтобы скрыть полосу прокрутки, не предоставляя другой сигнал пользователю, сообщающему прокручиваемость элемента. Во всяком случае, с этой стороны, я не могу думать ни о чем, что не какой-то хак, но здесь идет:

Поскольку это то, что нужно выполнить только один раз, и предполагая, что мы хотим предсказуемой функциональности в браузерах и ОС, вы можете использовать некоторые JS здесь. В системах, которые сохраняют боковую панель, свойства offsetWidth и scrollWidth элемента боковой панели будут разными. По умолчанию ваш элемент может иметь следующие стили:

$child-h-padding: 15px;
$max-scrollbar-width: 35px;

.r-sidebar {
  overflow-y: scroll;
  padding: 12px $child-h-padding;
  ...rest
}

.r-sidebar--r-padded {
  padding-right: $child-h-padding + $max-scrollbar-width;
  right: -$max-scrollbar-width;
}

Ответ 2

Перемещение полосы прокрутки из вида пользователей не так хорошо подходит для скрытия полосы прокрутки.

Есть ли способ исправить это без каких-либо плагинов?

Это то, что вы ищете?

.r-sidebar::-webkit-scrollbar { display: none; } 

Это скроет вашу полосу прокрутки на всех браузерах Chrome. Поскольку он специфичен для webkit, он должен работать в разных операционных системах, предполагая, что версии браузера обновлены.

Подробнее здесь

Почему полосы прокрутки отличаются от той же ОС и версии браузера, но разные машины

У меня нет немедленного ответа для этого, но, пожалуйста, предоставьте более подробную информацию о версиях машин/os/версиях браузера, и я постараюсь дать дополнительный ответ

Ответ 3

Левая боковая панель:

Добавьте это в div прокрутки:

direction: rtl;
left: -17px;

И это для div внутри:

.nav{   
 direction: ltr;
}

Это полностью скроет панель прокрутки. Но div все еще прокручивается.