10 способов реализации пользовательских полос прокрутки с примерами кода

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

Метод 1: свойства полосы прокрутки CSS
CSS предоставляет свойства, специфичные для полосы прокрутки, которые можно использовать для настройки внешнего вида полос прокрутки. Вы можете изменить такие свойства, как scrollbar-width, scrollbar-color, scrollbar-track-colorи scrollbar-thumb-color, чтобы добиться желаемого вида.

/* Example */
::-webkit-scrollbar {
  width: 8px;
}
::-webkit-scrollbar-track {
  background-color: #f1f1f1;
}
::-webkit-scrollbar-thumb {
  background-color: #888;
}

Метод 2: библиотеки JavaScript
Некоторые библиотеки JavaScript, такие как Perfect Scrollbar, jScrollPane и SimpleBar, предлагают готовые к использованию решения для пользовательских полос прокрутки. Эти библиотеки предоставляют дополнительные функции, такие как плавная и инерционная прокрутка, а также поддержка сенсорного ввода.

<!-- Example using Perfect Scrollbar -->
<link rel="stylesheet" href="perfect-scrollbar.css" />
<script src="perfect-scrollbar.js"></script>
<div class="custom-scrollbar">
  <!-- Content -->
</div>
<script>
  const container = document.querySelector('.custom-scrollbar');
  const ps = new PerfectScrollbar(container);
</script>

Метод 3: наложение полос прокрутки
Наложение полос прокрутки заменяет полосы прокрутки по умолчанию на пользовательские, которые накладываются на содержимое. Они обеспечивают гладкий и современный внешний вид. Такие библиотеки, как OverlayScrollbars.js и SimpleBar, предлагают простые в использовании решения для реализации наложенных полос прокрутки.

<!-- Example using OverlayScrollbars.js -->
<link rel="stylesheet" href="overlayscrollbars.css" />
<script src="overlayscrollbars.js"></script>
<div class="custom-scrollbar">
  <!-- Content -->
</div>
<script>
  const container = document.querySelector('.custom-scrollbar');
  OverlayScrollbars(container);
</script>

Метод 4: привязка прокрутки
привязка прокрутки позволяет привязывать контент к определенным позициям во время прокрутки, создавая более контролируемую прокрутку. Комбинируя свойства CSS, такие как scroll-snap-typeи scroll-snap-align, вы можете реализовать собственное поведение привязки прокрутки.

/* Example */
.custom-scrollbar {
  scroll-snap-type: y mandatory;
}
.custom-scrollbar div {
  scroll-snap-align: start;
}

Метод 5: плагины пользовательских полос прокрутки jQuery
Если вы используете jQuery, доступны различные плагины пользовательских полос прокрутки, которые обеспечивают кросс-браузерную совместимость и дополнительные функции. Такие плагины, как jScrollPane, slimScroll и mCustomScrollbar, предлагают гибкие возможности настройки полос прокрутки.

<!-- Example using jScrollPane -->
<link rel="stylesheet" href="jquery.jscrollpane.css" />
<script src="jquery.js"></script>
<script src="jquery.jscrollpane.js"></script>
<div class="custom-scrollbar">
  <!-- Content -->
</div>
<script>
  $(document).ready(function() {
    $('.custom-scrollbar').jScrollPane();
  });
</script>

Метод 6: пользовательские полосы прокрутки React
Для проектов на основе React существуют специальные библиотеки, такие как React-Custom-ScrollBars и React-ScrollBars-Custom, которые предоставляют настраиваемые компоненты полосы прокрутки. Эти библиотеки позволяют вам управлять внешним видом и поведением полос прокрутки с помощью компонентов React.

// Example using react-custom-scrollbars
import React from 'react';
import { Scrollbars } from 'react-custom-scrollbars';
const CustomScrollbar = () => (
  <Scrollbars style={{ width: 300, height: 200 }}>
    {/* Content */}
  </Scrollbars>
);
export default CustomScrollbar;

Метод 7: CSS-переходы и трансформации
Комбинируя переходы и преобразования CSS, вы можете создавать плавные и анимированные полосы прокрутки. Этот метод предполагает анимацию положения или размера полосы прокрутки на основе взаимодействия с пользователем или событий прокрутки.

/* Example */
.custom-scrollbar::-webkit-scrollbar-thumb {
  transition: background-color 0.3s;
}
.custom-scrollbar:hover::-webkit-scrollbar-thumb {
  background-color: #f00;
}

Метод 8: Индикатор прокрутки с помощью JavaScript
Индикатор прокрутки — это визуальное представление положения пользователя в документе. Используя JavaScript, вы можете создать собственный индикатор прокрутки, который показывает ход прокрутки.

<!-- Example -->
<div class="custom-scrollbar">
  <div class="content">
    <!-- Content -->
  </div>
  <div class="scroll-indicator"></div>
</div>
<script>
  const container = document.querySelector('.custom-scrollbar');
  const content = container.querySelector('.content');
  const scrollIndicator = container.querySelector('.scroll-indicator');
  container.addEventListener('scroll', () => {
    const scrollPercentage = (container.scrollTop / (content.offsetHeight - container.offsetHeight)) * 100;
    scrollIndicator.style.width = `${scrollPercentage}%`;
  });
</script>

Метод 9: пользовательские полосы прокрутки с помощью Vue.js
Если вы работаете с Vue.js, вы можете использовать такие библиотеки, как vuebar и vue-scroll-indicator, для реализации пользовательских полос прокрутки. Эти библиотеки предоставляют компоненты Vue, которые можно легко интегрировать в ваши приложения Vue.js.

<!-- Example using vuebar -->
<template>
  <vue-bar>
    <!-- Content -->
  </vue-bar>
</template>
<script>
import Vuebar from 'vuebar';
export default {
  components: {
    Vuebar,
  },
};
</script>

Метод 10: собственные полосы прокрутки JavaScript
В качестве упрощенного решения вы можете реализовать собственные полосы прокрутки с использованием встроенного JavaScript, управляя событиями прокрутки и положением прокрутки. Этот метод обеспечивает полный контроль над внешним видом и поведением полосы прокрутки.

// Example
const container = document.querySelector('.custom-scrollbar');
const content = container.querySelector('.content');
const scrollbar = container.querySelector('.scrollbar');
container.addEventListener('scroll', () => {
  const scrollPercentage = (container.scrollTop / (content.offsetHeight - container.offsetHeight)) * 100;
  scrollbar.style.height = `${scrollPercentage}%`;
});

Пользовательские полосы прокрутки могут значительно повысить визуальную привлекательность и удобство использования веб-сайтов и приложений. В этой статье мы рассмотрели десять различных методов реализации пользовательских полос прокрутки, включая свойства CSS, библиотеки JavaScript, наложенные полосы прокрутки, привязку прокрутки, плагины jQuery, компоненты React, анимацию CSS, индикаторы прокрутки, библиотеки Vue.js и собственные методы JavaScript. Выбрав подходящий метод в зависимости от требований вашего проекта, вы сможете создавать полосы прокрутки, которые легко интегрируются с вашим дизайном и обеспечивают плавную прокрутку.