Скроллбар как в mac os

Обновлено: 06.07.2024

Наверняка вы видели сайты с оригинальными полосами прокрутки. Это достигается с помощью нового CSS scroll свойства webKit-scrollbar . К сожалению, оно работает только в браузерах на движке WebKit . Но поддерживается jQuery почти во всех обозревателях. Давайте выполним стилизацию скроллбара.

Данное свойство поддерживается версиями Google Chrome для настольных компьютеров и мобильных устройств, Apple Safari , Flock , OmniWeb . Даже если вы создаете дизайн только для этих браузеров без использования jQuery , то сможете охватить только 72% пользователей интернета. Но если у вас нет аллергии на программирование, то можете быть уверены, что каждый ваш посетитель увидит красиво стилизованный скроллбар.

Стилизация скролла CSS и JQuery

Полосы прокрутки реализованы там, где длина контента превышает ширину окна контейнера. Благодаря этому вы получаете возможность стилизовать iframe , элементы div и поле ввода текста. В iframe и текстовой области окна браузеры автоматически добавляют полосу прокрутки в нижней части, когда содержимое выходит за пределы видимой области. Тем не менее, в контейнерах необходимо предоставлять дополнительную информацию для браузеров. Установка свойству overflow значения scroll говорит браузерам о том, что нужно выводить полосы прокрутки в случае переполнения окна контентом:

Это код scrolling CSS покажет полосу прокрутки такой (справа)

Стилизация скролла CSS и JQuery

Использование псевдоэлементов CSS для настройки скроллбара

IE5.5 был первым браузером, поддерживающим основные стили для скроллинга. Используя свойство scrollbar-face-color , можно были изменить цвет полос прокрутки. Хотя это и не добавляло большого разнообразия, но все же лучше, чем стандартная полоса прокрутки в браузере. Поскольку это свойство по-прежнему поддерживается в Internet Explorer , его можно использовать для пользователей, предпочитающих этот браузер.

Для WebKit-браузерах в CSS существует множество вариантов стилизации: изменение цвета и ширины полосы прокрутки, ползунков. Элементы скроллинга можно выбрать с помощью следующих псевдоэлементов.

::-webkit-scrollbar-thumb – Это ползунок скроллбара ( чем вы держите и прокручиваете страницу ). Он может иметь цвет или использовать градиент в качестве фона. Пример реализации:

::-webkit-scrollbar-track – позволяет настроить трек скроллбара ( путь движения ползунка ). Синтаксис псевдоэлемента для CSS scroll :

::-webkit-scrollbar-button – разработчики CSS3 не упускают из виду маленькие кнопки на концах полосы прокрутки. Их также можно настроить, так как они помогают, когда страница длинная и скроллбар становится слишком маленьким для прокрутки. Это свойство стиля верхнего и нижнего углов ( или левого и правого для горизонтальных полос прокрутки ):

Вот несколько примеров, которые демонстрируют силу свойства scrolling CSS .

Настройка скроллбара с помощью Jquery

Если вам нравится программирование front-end , вы можете использовать Jquery-плагин JScrollPane . Он довольно прост в использовании. После того, как вы загрузили и подключили соответствующие файлы в заголовке документа, нужно вызвать одну Javascript-функцию для инициализации панели прокрутки. Вы можете легко изменить дизайн полосы прокрутки с помощью CSS или выбрать одну из существующих тем.

С помощью этого плагина вы можете создавать скроллинг для всех типов браузеров. Так что я бы посоветовал вам воспользоваться им, чтобы сэкономить время и охватить сразу все браузеры:

Если вы захотите изменить настройки CSS scroll по умолчанию, предоставленные JScrollPane , нужно редактировать стили соответствующих элементов:

Вывод

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

Дайте знать, что вы думаете по этой теме в комментариях. Мы крайне благодарны вам за ваши комментарии, лайки, отклики, подписки, дизлайки!

Чтобы изменить скролл в Firefox, используйте следующий код.

Первое значение scrollbar-color изменяет цвет ползунка, второе - цвет скроллбара.

Стилизация скролла в Mozilla Firefox

Значения scrollbar-width изменят толщину (ширину - для вертикального скроллбара, высоту - для горизонтального):

  • auto - толщина скролла по умолчанию;
  • thin - более тонкий вариант скролла;
  • none - скрыть скролл.

Пример. Обратите внимание, данный пример предназначен для просмотра в Firefox.

Выберите цвет скроллбара
Выберите цвет ползунка скроллбара
Выберите толщину скролла

Какой-то контент. Текст, изображения или что-то ещё.

Стилизация скролла для webkit браузеров

Чтобы стилизовать скролл для Google Chrome, Яндекс.Браузер, Safari и Opera используйте следующие CSS свойства.

mCustomScrollbar

Теперь рассмотрим, как кроссбраузерно стилизовать скролл при помощи плагина mCustomScrollbar .

Сначала скачайте архив и извлеките к себе в проект файлы:

  1. jquery.mCustomScrollbar.min.css
  2. jquery.mCustomScrollbar.concat.min.js
  3. mCSB_buttons.jpg

Затем подключите jQuery и файлы плагина.

Или же можете подключить все файлы через CDN jsdelivr:

Инициализация

Инициализация через JavaScript

Инициализация в HTML

Настройки

Темы mCustomScrollbar

Выбрать подходящую тему можно здесь.

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

Добавление скролла

Чтобы принудительно добавить скролл для блока, необходимо ограничить его по высоте/ширине и добавить overflow :

  • overflow-y: auto; - для создания вертикального скролла (+ max-height);
  • overflow-x: auto; - для создания горизонтального скролла (+ max-width).

При создании горизонтального скролла для текстового блока может понадобится добавление следующего css: white-space: nowrap; .

Как скрыть скролл

Скроем скролл, но оставим возможность прокрутки блока.

CSS Scroll Snap

Позволяет прокручивать не попиксельно, а целыми блоками. Базовое использование.

Вторая версия плагина jScrollPane, несомненно, заслуживает отдельной статьи. Вместе с тем мы не стали модернизировать первоначальную статью JScrollPane. Делаем красивый скроллинг, посвященную первой версии плагина, так как в некоторых ситуациях нужен будет именно первый вариант. Подробнее об этом будет ниже, а сейчас — встречайте! Герой дня JScrollPane 2!

На официальной странице плагина можно посмотреть много других примеров.

Что качать?

Быстрый старт

Подключаем библиотеки и не забываем про CSS:

В HTML каким-либо способом выделяем контейнер для скролла (например, присваиваем класс):

В CSS задаем оформление контейнера:

Настраиваем стили из jquery.jscrollpane.css (подробнее об этом немного ниже).

Последний шаг — инициализируем скролл скриптом:

А теперь подробнее

Настройка стилей

jquery.jscrollpane.css содержит стили на все случаи жизни. Привожу только те правила, которые скорее всего нужно будет настраивать:

Настройки

По сравнению с предыдущей версией появилось масса различных настроек инициализации. Целое море! Но не бойся, что бы не утонуть — мы составили табличку:

Название функции Описание функции Тип данных Значение по-умолчанию
showArrows Определяет, нужно ли показывать стрелки на полосе прокрутки. boolean false
maintainPosition Определяет, должен ли scrollpane сохранять позицию ползунка при переинициализации скрипта. Если нет, то ползунок при переинициализации возвращается в верхнее положение. См. также stickToBottom и stickToRight. boolean true
stickToBottom Если maintainPosition=true, а ползунок прокрутки прокручен до низа, то если stickToBottom=true, то при добавлении нового контента ползунок прокрутки так и останется внизу, несмотря на то, что блок растянулся в высоту. boolean false
stickToRight Если maintainPosition=true, а ползунок прокрутки прокручен до конца вправо, то если stickToBottom=true, то при добавлении нового контента ползунок прокрутки так и останется справа, несмотря на то, что блок растянулся в ширину. boolean false
autoReinitialise Автоматическая переинициализация jScrollPane. Это может помочь с случаях, когда размеры контента в блоке с прокруткой (или окружающих элементов) изменяются. Однако, необходим дополнительный JavaScript с таймером, поэтому эту функцию рекомендуется применять только в случае необходимости. boolean false
autoReinitialiseDelay Число в миллисекундах между автоматическими переинициализациями скрипта (если autoReinitialise = true). int 500
verticalDragMinHeight Минимальная высота вертикального ползунка. Вообще размеры ползунка просчитываются автоматически, но в пределах заданного диапазона. int 0
verticalDragMaxHeight Максимальная высота вертикального ползунка. Вообще размеры ползунка просчитываются автоматически, но в пределах заданного диапазона. int 99999
horizontalDragMinWidth Минимальная ширина горизонтального ползунка. Вообще размеры ползунка просчитываются автоматически, но в пределах заданного диапазона. int 0
horizontalDragMaxWidth Максимальная ширина горизонтального ползунка. Вообще размеры ползунка просчитываются автоматически, но в пределах заданного диапазона. int 99999
contentWidth Ширина контента блоке с прокруткой. Значение по умолчанию неопределено, что позволит JScrollPane посчитать ее самому. Однако, в некоторых случаях бывает нужно задать ее принудительно (например, для предотвращения горизонтальной прокрутки). int не определена
animateScroll Определяет, следует ли использовать анимацию при вызове ScrollTo или scrollBy. Можно контролировать скорость анимации и ослабление с помощью настроек animateDuration и animateEase, или если нужна более тонкая настройка, то можно переопределить функцию jQuery animate. boolean false
animateDuration Длительность анимированного перехода (если он есть, конечно). int 300
animateEase Тип перехода (см. jQuery animateScroll и jQuery easing) string linear
hijackInternalLinks Устанавливается в true, если на старнице используются внутренние ссылки для прокрутки ползунка boolean false
verticalGutter Расстояние между контентом и вертикальной полосой прокрутки. int 4
horizontalGutter Расстояние между контентом и горизонтальной полосой прокрутки. int 4
mouseWheelSpeed Множитель, определяющий на сколько смещается прокрутка при скроллинге колесиком мыши int 10
arrowButtonSpeed Множитель, определяющий на сколько смещается прокрутка при нажатии на стрелки int 10
arrowRepeatFreq Число миллисекунд между повторяющимися событиями прокрутки, когда мышь зажата над одной из клавиш со стрелкой. int 100
arrowScrollOnHover Определяет, должен ли прокручиваться ползунок при наведении на клавиши со стрелками. boolean false
verticalArrowPositions Где должны появляться вертикальные стрелки относительно вертикального трека. string (split|before|after|os) split
horizontalArrowPositions Где должны появляться горизонтальные стрелки относительно горизонтального трека. string (split|before|after|os) split
enableKeyboardNavigation Определяет, можно ли использовать стрелки (и другие клавиши) на клавиатуре для навигации в блоке с прокруткой. boolean true
hideFocus Скрывает outline при фокусе. Не рекомендуется изменять этот параметр. Можно стилизовать outline с помощью CSS. boolean false
clickOnTrack При нажатии на треке ползунок переходит в точку, на которую нажали. boolean true
trackClickSpeed Множитель, определяющий на сколько смещается прокрутка когда мышь зажата над треком. int 30
trackClickRepeatFreq Число миллисекунд между повторяющимися событиями прокрутки, когда мышь зажата над треком. int 100

jScrollPane API

Фактически, это функции, которые служат для управления скроллом.

Для работы с этими функциями нужно получить доступ к переменной jsp:

После того, как это сделано, можно вызывать следующие функции:

  • ele — элемент, которое будет анимироваться
  • prop — свойство, которое будет анимироваться
  • value — значение свойства после анимации
  • stepCallback — функция, которую должна выполняться каждый раз при обновлении значения свойства

Примеры

Инициализация с использованием стрелок для прокрутки:

Задаем минимальную и максимальную длину ползунка прокрутки:

Пример вызова API для программной перемотки скроллбара:

Плюсы:

  • адекватно работает во всех популярных браузерах;
  • позволяет гибко настроить вид и поведение скролла;

Минусы:

  • немного великоват (в несжатом виде 44Kb, в сжатом 14.6Kb);
  • прокрутка колесиком мыши «не дружит» с горизонтальным скроллом.

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

Про резиновый ползунок

Update 15.11.2011 by ksu.

В старой версии плагина ползунок прокрутки состоял из трех частей — резиновой середины, верхней и нижней крышки. Каждой части в отдельности можно было задать, например, фоновый рисунок. В итоге получался красивый резиновый ползунок.

Новая версия плагина тоже позволяет это сделать, но решение немного замаскировано. Как и раньше, присутствуют специальные классы jspDragTop и jspDragBottom. Остается в CSS задать ширину, высоту фоны и позиционирование.

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

Полосы прокрутки в Safari

Полосы прокрутки в Safari

Связанный: Как показать рабочий стол на Mac?

Вернуть отсутствующие полосы прокрутки на Mac

Если вы не видите полосу прокрутки в Safari, Pages или любом другом приложении, просто переместите мышь или курсор с помощью трекпада. Это сделает полосу прокрутки видимой. Однако это неудобно, так как он может исчезнуть, прежде чем вы успеете перетащить его в нужное положение. Решение простое; вам нужно сделать его видимым постоянно.

Щелкните «Меню Apple» и перейдите в раздел «Системные настройки…».

Откройте системные настройки в Mac

Откройте системные настройки в Mac

Нажмите на опцию «Общие».

Открыть общие настройки на Mac

Открыть общие настройки на Mac

У вас будет три варианта в разделе «Показать полосы прокрутки».

Автоматически на основе мыши или трекпада

Это непростой вариант для понимания. Это можно лучше понять с помощью внешней мыши, подключенной к вашему Mac, и без нее. Сначала включите это и откройте любое приложение по умолчанию, например Preview, Safari или Pages, показывающие длинный документ. Вы НЕ увидите полосу прокрутки, если не переместите курсор вверх или вниз с помощью движения трекпада.

Теперь подключите мышь с помощью кабеля или USB и проверьте документ. Вы будете постоянно видеть полосы прокрутки. Полосы можно перемещать с помощью мыши или трекпада, клавиш со стрелками или пробела.

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

При прокрутке

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

Всегда

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

Связанный: Как управлять рабочим столом на Mac?

Движение полосы прокрутки

В большинстве случаев простого включения полосы прокрутки недостаточно. Обычно вы можете ожидать, что контент переместится в положение полосы прокрутки, где вы щелкнули по боковой панели. К сожалению, Mac будет перемещаться страница за страницей независимо от того, где вы нажимаете на боковую панель. Вы можете просто перетащить полосу прокрутки в нужное место. Однако вы также можете настроить полосу прокрутки, щелкнув ее в «Общие настройки» в разделе «Щелкните на полосе прокрутки до».

Использование стрелок и пробела

Вместо полос прокрутки вы также можете использовать клавиши со стрелками для навигации по документам. Это особенно полезно для вертикальной прокрутки.

  • Используйте стрелку вверх или вниз, чтобы переместить щелчок мышью, который переместит документ на несколько строк вверх или вниз.
  • Нажмите пробел, чтобы быстро перейти на следующую страницу.

Направление прокрутки полос прокрутки в Mac

Еще одним фактором при использовании вертикальной полосы прокрутки с помощью трекпада является направление прокрутки. Для большинства из нас прокрутка должна происходить в направлении, противоположном направлению движения двойным пальцем. Это означает, что, когда вы проводите двойными пальцами вниз, контент перемещается вверх и наоборот. Это называется неестественной прокруткой.

  • Перейдите в «Меню Apple> Системные настройки…» и нажмите «Трекпад».
  • Щелкните вкладку «Прокрутка и масштабирование».
  • Включите или отключите параметр «Направление прокрутки: естественный», чтобы настроить направление прокрутки.

Полосы прокрутки в сторонних приложениях Mac

Все настройки полосы прокрутки, кроме направления, применяются только к приложениям Apple по умолчанию, таким как Pages, Safari, Finder, Preview и т. Д. Это НЕ будет работать для сторонних приложений, таких как Google Chrome.

  • Полосы прокрутки всегда видны в большинстве сторонних приложений, независимо от ваших общих настроек.
  • Вы можете переместить полосу прокрутки и содержимое в позицию, по которой щелкнули мышью, хотя в настройках вы установили «Перейти на следующую страницу».

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

Читайте также: