Я знаю, что могу легко сделать это с помощью jQuery, но я бы предпочел делать это с помощью чистого CSS, если это возможно.
Буду признателен за чей-нибудь совет специалиста!
Расскажите, пожалуйста, как это можно сделать с помощью jQuery. Я столкнулся с той же проблемой, но использовал CSS, чтобы исправить это для Webkit. Однако Firefox создает проблему, с которой может помочь ваше решение jQuery. iGbanam 09.06.2012
Я рекомендую использовать плагин jscrollpane jQuery. Dimitri Vorontzov 26.07.2012
В Firefox есть проблема с jScrollPane. jScrollPane отлично работает в Chrome, но в Firefox у вас есть пустая полоса прокрутки system справа от полосы прокрутки jScrollPane. Полоса прокрутки должна быть только одна iGbanam 26.07.2012
Не правда. Если он у вас есть, значит, вы где-то сделали что-то не так. Dimitri Vorontzov 19.08.2012
См. Мой ответ здесь: stackoverflow.com/questions/7357203/custom-scrollbars/ < / а> Buzinas 06.09.2015
Я хотел бы порекомендовать fakescroll - крошечный скрипт vanilla-js для настраиваемых полос прокрутки. vsync 05.07.2018
Для scrollbar-color можно установить одно из следующих значений ( описания из MDN):
auto Отрисовка платформы по умолчанию для дорожки полосы прокрутки при отсутствии других связанных свойств цвета полосы прокрутки.
dark Показывать темную полосу прокрутки, которая может быть темным вариантом полосы прокрутки, предоставляемой платформой, или настраиваемой полосой прокрутки с темными цветами.
light Показывать светлую полосу прокрутки, которая может быть либо облегченным вариантом полосы прокрутки, предоставляемой платформой, либо настраиваемой полосой прокрутки светлых цветов.
<color><color> Применяет первый цвет к ползунку полосы прокрутки, второй - к дорожке полосы прокрутки.
Автоматически скрывающиеся полупрозрачные полосы прокрутки, которые используются в macOS по умолчанию, не могут быть окрашены с помощью этого правила (они по-прежнему выбирают свой собственный контрастный цвет на основе фона). Окрашены только постоянно отображаемые полосы прокрутки (Системные настройки> Показать полосы прокрутки> Всегда).
Для scrollbar-width можно установить одно из следующих значений ( описания из MDN):
auto Ширина полосы прокрутки по умолчанию для платформы.
thin Вариант с тонкой шириной полосы прокрутки на платформах, которые предоставляют эту возможность, или более тонкую полосу прокрутки, чем ширина полосы прокрутки платформы по умолчанию.
none Полоса прокрутки не отображается, но элемент все равно можно прокручивать.
Вы также можете установить конкретное значение длины в соответствии со спецификацией. И thin, и определенная длина не могут делать ничего на всех платформах, и то, что именно они делают, зависит от платформы. В частности, Firefox, похоже, в настоящее время не поддерживает определенное значение длины (этот комментарий на их счетчике ошибок, кажется, подтверждает это). Клавиатура thin, похоже, хорошо поддерживается, по крайней мере, с поддержкой macOS и Windows.
Вероятно, стоит отметить, что параметр значения длины и все свойство scrollbar-width рассматриваются для удаления в будущем проекте, и если это произойдет, это конкретное свойство может быть удалено из Firefox в будущей версии.
Поскольку Firefox 64, можно использовать новые спецификации для простого стиля полосы прокрутки (не такой полный, как в Chrome с префиксами поставщиков).
В этом примере можно увидеть решение, сочетающее разные правила для работы с Firefox и Chrome с аналогичный (не равный) конечный результат (например, используйте ваши исходные правила Chrome):
Наконец, чтобы скрыть стрелки на полосах прокрутки также в Firefox, в настоящее время необходимо установить его как "thin" со следующим правилом scrollbar-width: thin;
Ответ 4 · рейтинг 45 · Tomaz
Могу я предложить альтернативу?
Никаких скриптов, только стандартизованные стили CSS и немного творчества. Краткий ответ - маскировка частей существующей полосы прокрутки браузера, что означает сохранение всей ее функциональности.
.scroll_content {
position: relative;
width: 400px;
height: 414px;
top: -17px;
padding: 20px 10px 20px 10px;
overflow-y: auto;
}
Для демонстрации и более подробного объяснения проверьте здесь ...
Я думал, что поделюсь своими выводами, если кто-то рассматривает возможность использования плагина JQuery для этой работы.
Я попробовал JQuery Custom Scrollbar. Это довольно модно и имеет некоторую плавную прокрутку (с инерцией прокрутки) и имеет множество параметров, которые вы можете настроить, но в итоге для меня это было слишком интенсивно для ЦП (и это добавляет изрядное количество в DOM).
Теперь я попробую Perfect Scrollbar. Он простой и легкий (6 КБ), и до сих пор он неплохо справляется. Это совсем не интенсивно использует процессор (насколько я могу судить) и очень мало добавляет в ваш DOM. У него есть только пара параметров для настройки (wheelSpeed и wheelPropagation), но это все, что мне нужно, и он прекрасно обрабатывает обновления прокручиваемого контента (например, загрузка изображений).
P.S. Я быстро взглянул на JScrollPane, но @simone прав, он немного устарел и PITA.
Эта функция является в значительной степени экспериментальной, и я думаю, Mozilla предстоит многое сделать, пока она не станет доступной для всех на каждой странице. Я протестировал множество решений, но следующий код работает отлично.
Он работает в пользовательском стиле и, похоже, не работает на веб-страницах. Я не нашел официального указания от Mozilla по этому поводу. Хотя в какой-то момент это могло сработать, Firefox не имеет официальной поддержки для этого. Эта ошибка все еще открыта https://bugzilla.mozilla.org/show_bug.cgi?id=77790