Хром полоса прокрутки исчезает (не переполнение-у)
Страница (live-версия) состоит (грубо говоря) из трех частей:
- левая боковая панель
- центрированное содержание
- правая боковая панель
Правая боковая панель должна быть прокручиваемой, поэтому я установил
overflow-y: scroll; right: -17px;, чтобы просто скрыть полосу прокрутки. Body, html Есть overflow-y: auto;. Таким образом, мне не нужно иметь две полосы прокрутки (для страницы и для правой боковой панели).Выпуск:
(только в CHROME, протестировано на версиях 62 и 63)
Почему-то на разных машинах хром дает два разных стиля для полосы прокрутки: Case 1 иCase 2 .
Таким образом, в основном, для случая 1 правая боковая панель прокрутки "абсолютно расположена", и страница скрывает 17px себя из-за этого, в то время как для случая 2 полоса прокрутки "относительно расположена", и страница скрывает 17px, который занимает полоса прокрутки.
Вопрос
1) Почему полосы прокрутки различны в одной и той же версии ОС и браузера, но различны машины ?
2) Есть ли способ исправить это без каких-либо плагинов ? Принимая во внимание, что пользователи Windows имеют случай 2 и пользователи MacOS либо случай 1, либо 2 ?
3 ответов:
1) Почему полосы прокрутки отличаются на одной и той же ОС и версии браузера, но на разных машинах ?
Это, вероятно, связано с системными настройками на macOS.
Если вы выбрали
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; }Вы можете добавить/удалить класс
.r-sidebar--r-paddedна основе значенийoffsetWidthиscrollWidth.Это должно работать везде, независимо от браузера / ОС. Я уже тестировал на macOS / Chrome с обоими настройками боковой панели.
Перемещение полосы прокрутки из поля зрения пользователей не так хорошо, как при скрытии полосы прокрутки в целом.
Есть ли способ исправить это без каких-либо плагинов ?
Это то, что вы ищете?
.r-sidebar::-webkit-scrollbar { display: none; }Это скроет вашу полосу прокрутки во всех браузерах chrome. Поскольку его специфика для webkit, он должен работать в разных операционных системах, предполагая, что версии браузера актуальны.
Почему полосы прокрутки различны в одной и той же версии операционной системы и браузера, но на разных машинах
У меня нет немедленного ответа на этот вопрос, но, пожалуйста, предоставьте более подробную информацию о машинах / версиях ОС / версиях браузера, и я постараюсь сделать все возможное, чтобы предоставить дополнительный ответ
Левая боковая панель:
Добавьте это к свитку div:
direction: rtl; left: -17px;И это дивам внутри:
.nav{ direction: ltr; }Это полностью скроет полосу прокрутки. Но div все еще прокручивается.

Comments