Полоса прокрутки. Эффективное использование элементов управления
Часто бывает нужно найти какой-то фрагмент текста в документе, и вы не помните конкретных слов в этом фрагменте, но помните, как это выглядело визуально – структура абзацев, иллюстрации и прочее. В этом вам очень помог бы умный скроллинг, а точнее, полоса прокрутки.
Бегунок полосы прокрутки – маленький, перемещаемый прямоугольник, который указывает текущее положение и нередко масштаб «территории», по которой может быть осуществлено перемещение.
Недостатки применения полосы прокрутки
Полоса прокрутки может использоваться для ввода приблизительных значений. Тот факт, что полоса прокрутки не дает никакой информации о ее конечных значениях, существенно снижает ее ценность как элемента выбора значения. Тем не менее, полоса прокрутки с ее возможностью пропорционального предоставления данных, может являться превосходным образцом обратной визуальной связи.
Другой недостаток полосы прокрутки – ее скупая информативность. Вместо этого она должна давать нам полную информацию, которой она владеет. Лучшие современные полосы прокрутки используют бегунки, которые изменяют свой размер пропорционально размеру видимой области документа. Но кроме этого полосы прокрутки могли бы сообщить нам:
- Сколько всего страниц содержится в документе
- Номер текущей страницы по мере перемещения бегунка
- Первое предложение на каждой странице по мере перемещения бегунка
Полоса прокрутки управляет навигацией по документу. Поэтому должна дать нам возможность перемещаться в любую точку документа быстро и легко. Она могла бы:
- Предусмотреть кнопки перехода к нужной странице/главе/разделу/ключевому слову
- Предусмотреть кнопки перехода в начало или в конец документа
- Дать возможность устанавливать закладки, к которым можно было бы быстро вернуться
Возможности полосы прокрутки
Недавние версии Microsoft Word содержат полосы, которые реализуют многие из этих возможностей. Полоса прокрутки также требует высокой степени точности владения мышью. Вы вынуждены позиционировать курсор мыши с более высокой точностью, неизбежно отвлекаясь от содержимого документа. Некоторые полосы прокрутки дублируют обе кнопки, управляющие прокруткой вверх и вниз, на обоих концах полосы. Для тех, кто просматривает документы, разворачивая их на полный экран, это может быть удобно. Для маленьких окон, такое дублирование элементов управления – вероятно излишне и просто загромождает экранное пространство.
И, наконец, еще одна раздражающая особенность полос прокрутки: в окнах, развернутых на весь экран, полоса прокрутки располагается по правому краю экрана. Вы ожидаете, что если вы переместите мышь до упора вправо и щелкните, то должно что-то произойти. Но дело в том, что правые крайние два пикселя экрана не являются частью полосы прокрутки, даже притом, что они похожи на нее. Это означает, что вы снова должны проявить чудеса моторики, чтобы гарантировать попадание на полосу прокрутки прежде, чем начинаете листать документ. Если и есть разумное объяснение, почему активная область полосы прокрутки не может простираться до самого края экрана, то авторам не удалось ее найти.
Рисунок 1.
Вертикальную полосу прокрутки можно скроллировать роликом мыши, чего не сделаешь с горизонтальной. Поэтому старайтесь избегать горизонтальной полосы прокрутки.
Рисунок 2.
А вы правильно используете полосы прокрутки на сайте или приложении? Проверьте прямо сейчас.
Узнайте как эффективно использовать все элементы управления на нашем тренинге “Эффективное использование элементов управления”
Полоса прокрутки в Excel. Настройка и привязка макросов. Отменить защиту
Аргумент Excel. Как удобно выделить аргументы функции?
Как запустить макрос при изменении ячейки?
Иногда клиента не переубедишь. Думаю, это даже хорошо — ведь только клиент знает, что ему на самом деле нужно, а предоставляющий услугу должен стремиться сделать именно как просят. На этот раз мне заказали сделать, чтобы ячейки в матрице выбирались при помощи полосы прокрутки, горизонтальной и вертикальной. Основная причина — закрыть доступ к самой матрице и оставить возможность двигать только полосы прокрутки. Сделал именно так. А вам я расскажу, что такое полоса прокрутки в Excel, и как ее добавить на лист.
Сперва я напишу, как правильно и быстро добавить полосу прокрутки на лист, затем опишу, как настроить полосы,привязать их к коду VBA и защитить лист.
Содержание
- Полоса прокрутки в Excel. Начало
- Полоса прокрутки в Excel, как элемент управления формы. Настройка
- Добавим в полосу прокрутки немного макросов
- Как защитить лист, но дать возможность работать с полосой прокрутки (элементом управления форм)
- Похожие статьи
Полоса прокрутки в Excel. Начало
Добавить полосу прокрутки несложно: перейдите на вкладку разработчик (как включить вкладку, читайте здесь). Найдите кнопку Вставить и выберите Элемент управления формы — Полоса прокрутки. Как показано на картинке:
Можно выбрать и элементы ActiveX (ниже), но на мой взгляд настройка Элемента управления формы для новичка удобнее. Поэтому рассказываю именно о них.
Полоса прокрутки в Excel, как элемент управления формы. Настройка
Итак, вы добавили полосу. Теперь привяжем ее к данным, сделать это несложно. Кликаете правой кнопкой мыши и выбираете формат объекта
Размер вы можете изменять, перетаскивая границы, поэтому в открывшемся окне нам наиболее интересна вкладка Элемент управления
Задаем мин и макс значения (у нас полоса на месяцы, поэтом от одного до 12), задаем шаг изменения по одному месяцу
Двигая ползунок полосы прокрутки, вы передаете число значения ползунка в определенную ячейку.
Это число передается в ячейку, которую вы указываете в поле Связь с ячейкой. В нашем случае A2.
Добавим в полосу прокрутки немного макросов
Теперь, чтобы в таблице выбиралась определенная ячейка, добавим немного кода. Откройте редактор VBA (что это такое читайте в статье).
На странице листа запишите код
Sub ScrollBar8_Change() Cells(Range("A2"). Value + 4, Range("B2").Value).Select End Sub
Этот макрос будет выполняться при изменении полосы прокрутки ScrollBar8 методом Change. У меня элементов было много и форма управления восьмая. Узнать номер вашей полосы прокрутки можно в окне, предварительно выделив полосу.
В Cells мы определяем значения нашей матрицы сначала по строкам, потом по столбцам. В ячейку B2 записываем статичное значение или передаем с горизонтальной полосы прокрутки. Вторую полосу создаем по аналогии.
Полный пример скачайте тут.
Как защитить лист, но дать возможность работать с полосой прокрутки (элементом управления форм)
Заходите во вкладку Рецензирование и найдите кнопку Защитить лист. Жмете ОК. Но элементы управления форм тоже не работают во время защиты, — скажете вы. Верно. Я видел громоздкие коды, которые решали эту проблему. Но есть решение простое и удобное. Разрешите изменять ячейки, в которые полосы передают данные (A1 и B2), тогда и полосы будут работать при защищенном листе.
Чтобы разрешить изменение ячеек, кликните по ячейке правой кнопкой мыши — Формат ячеек — вкладка Защита — снимите галочку Защищаемая ячейка
Теперь полосы прокрутки работают, как нам надо.
Надеюсь, понятно все изложил. Комментируйте и задавайте вопросы.
Аргумент Excel. Как удобно выделить аргументы функции?
Как запустить макрос при изменении ячейки?
О полосах прокрутки — приложения Win32
- Статья
- 16 минут на чтение
Окно может отображать объект данных, например документ или растровое изображение, размер которого превышает рабочую область окна. При наличии полосы прокрутки пользователь может прокручивать объект данных в клиентской области, чтобы отобразить части объекта, выходящие за границы окна.
Полосы прокрутки должны быть включены в любое окно, для которого содержимое клиентской области выходит за границы окна. Ориентация полосы прокрутки определяет направление, в котором происходит прокрутка, когда пользователь работает с полосой прокрутки. Горизонтальная полоса прокрутки позволяет пользователю прокручивать содержимое окна влево или вправо. Вертикальная полоса прокрутки позволяет пользователю прокручивать содержимое вверх или вниз.
В этом разделе обсуждаются следующие темы.
- Части полосы прокрутки
- Стандартные полосы прокрутки и элементы управления полосой прокрутки
- Положение окна прокрутки и диапазон прокрутки
- Видимость полосы прокрутки
- Запросы полосы прокрутки
- Интерфейс клавиатуры для полосы прокрутки
- Прокрутка области клиента
- Цвета и показатели полосы прокрутки
Полоса прокрутки состоит из заштрихованного стержня с кнопками со стрелками на каждом конце и
Пользователь прокручивает содержимое окна, щелкая одну из кнопок со стрелками, щелкая область в затененной полосе прокрутки или перетаскивая ползунок прокрутки. Когда пользователь нажимает кнопку со стрелкой, приложение прокручивает содержимое на одну единицу (обычно на одну строку или столбец). Когда пользователь щелкает заштрихованные области, приложение прокручивает содержимое на одно окно. Объем прокрутки, который происходит, когда пользователь перетаскивает ползунок прокрутки, зависит от расстояния, на которое пользователь перетаскивает ползунок, и от диапазона прокрутки полосы прокрутки. Дополнительные сведения о диапазоне прокрутки см. в разделе Положение поля прокрутки и диапазон прокрутки.
На следующем снимке экрана показан расширенный элемент управления редактированием с вертикальными и горизонтальными полосами прокрутки, как они могут отображаться в Windows Vista. Вертикальная полоса прокрутки в настоящее время «горячая», потому что указатель мыши завис над ней, когда был сделан снимок экрана.
Полоса прокрутки включается в окно либо как стандартная полоса прокрутки, либо как элемент управления полосой прокрутки. Стандартная полоса прокрутки располагается в неклиентской области окна. Он создается вместе с окном и отображается при отображении окна. Единственной целью стандартной полосы прокрутки является предоставление пользователю возможности генерировать запросы на прокрутку для просмотра всего содержимого клиентской области.
Полоса прокрутки — это окно управления, принадлежащее классу окон SCROLLBAR. Элемент управления полосы прокрутки появляется и функционирует как стандартная полоса прокрутки, но это отдельное окно. Как отдельное окно, элемент управления полосы прокрутки принимает фокус прямого ввода.
В одном окне можно использовать столько элементов управления полосы прокрутки, сколько необходимо. При создании элемента управления полосы прокрутки необходимо указать размер и положение полосы прокрутки. Однако, если размер окна элемента управления полосы прокрутки можно изменить, корректировка размера полосы прокрутки должна выполняться всякий раз, когда изменяется размер окна.
Преимущество использования стандартной полосы прокрутки заключается в том, что система создает полосу прокрутки и автоматически устанавливает ее размер и положение. Однако стандартные полосы прокрутки иногда слишком ограничены. Например, предположим, что вы хотите разделить клиентскую область на квадранты и использовать отдельный набор полос прокрутки для управления содержимым каждого квадранта. Вы не можете использовать стандартные полосы прокрутки, потому что вы можете создать только один набор полос прокрутки для конкретного окна.
Приложения могут предоставлять элементы управления полосой прокрутки для целей, отличных от прокрутки содержимого окна. Например, приложение-заставка может предоставить полосу прокрутки для установки скорости, с которой графика перемещается по экрану.
Элемент управления полосы прокрутки может иметь несколько стилей, которые служат для управления ориентацией и положением полосы прокрутки. Вы указываете нужные стили при вызове функции CreateWindowEx для создания элемента управления полосы прокрутки. Некоторые стили создают элемент управления полосы прокрутки, который использует ширину или высоту по умолчанию. Однако вы всегда должны указывать координаты x и y, а также другие размеры полосы прокрутки.
Примечание
Чтобы использовать визуальные стили с полосами прокрутки, приложение должно включать манифест и вызывать InitCommonControls в начале программы. Сведения о визуальных стилях см. в разделе Визуальные стили. Сведения о манифестах см. в разделе Включение визуальных стилей.
Положение полосы прокрутки представлено целым числом; это относительно левого или верхнего конца полосы прокрутки, в зависимости от того, является ли полоса прокрутки горизонтальной или вертикальной. Позиция должна быть в пределах минимального и максимального значений диапазона прокрутки. Например, в полосе прокрутки с диапазоном от 0 до 100 позиция 50 находится посередине, а остальные позиции равномерно распределены по полосе прокрутки. Начальный диапазон зависит от полосы прокрутки. Стандартные полосы прокрутки имеют начальный диапазон от 0 до 100; элементы управления полосой прокрутки имеют пустой диапазон (и минимальное, и максимальное значения равны нулю), если вы не указали явный диапазон при создании элемента управления. Вы можете изменить диапазон в любое время. Вы можете использовать Функция SetScrollInfo для установки значений диапазона и функция GetScrollInfo для извлечения текущих значений диапазона.
Приложение обычно настраивает диапазон прокрутки на удобные целые числа, что позволяет легко преобразовать положение поля прокрутки в значение, соответствующее прокручиваемому объекту данных. Например, если приложение должно отображать 260 строк текстового файла в окне, которое может отображать только 16 строк за раз, диапазон вертикальной полосы прокрутки может быть установлен от 1 до 244. Если ползунок находится в положении 1, первая строка будет в верхней части окна. Если ползунок находится в позиции 244, последняя строка (строка 260) будет внизу окна. Если приложение пытается указать значение положения, которое меньше минимального или больше максимального, вместо этого используется минимальное или максимальное значение диапазона прокрутки.
Вы можете установить размер страницы для полосы прокрутки. Размер страницы представляет собой количество единиц данных, которые могут поместиться в клиентской области окна-владельца с учетом его текущего размера. Например, если клиентская область может содержать 16 строк текста, приложение установит размер страницы равным 16. Система использует размер страницы, а также диапазон прокрутки и длину полосы прокрутки, чтобы установить размер страницы. поле прокрутки. Всякий раз, когда изменяется размер окна, содержащего полосу прокрутки, приложение должно вызвать функцию Функция SetScrollInfo для установки размера страницы. Приложение может получить текущий размер страницы, вызвав функцию отправки GetScrollInfo .
Чтобы установить полезную связь между диапазоном полосы прокрутки и объектом данных, приложение должно корректировать диапазон всякий раз, когда изменяется размер объекта данных.
Когда пользователь перемещает ползунок на полосе прокрутки, полоса прокрутки сообщает о положении ползунка в виде целого числа в диапазоне прокрутки. Если позиция является минимальным значением, поле прокрутки находится в верхней части вертикальной полосы прокрутки или в левом конце горизонтальной полосы прокрутки. Если позиция является максимальным значением, поле прокрутки находится внизу вертикальной полосы прокрутки или в правом конце горизонтальной полосы прокрутки.
Максимальное значение, которое может сообщать полоса прокрутки (то есть максимальная позиция прокрутки), зависит от размера страницы. Если полоса прокрутки имеет размер страницы больше единицы, максимальная позиция прокрутки меньше максимального значения диапазона. Вы можете использовать следующую формулу для расчета максимальной позиции прокрутки:
MaxScrollPos = MaxRangeValue - (PageSize - 1)
Приложение должно перемещать ползунок на полосе прокрутки. Хотя пользователь делает запрос на прокрутку в полосе прокрутки, полоса прокрутки не обновляет положение поля прокрутки автоматически. Вместо этого он передает запрос родительскому окну, которое должно прокручивать данные и обновлять положение полосы прокрутки. Приложение использует SetScrollInfo Функция для обновления положения полосы прокрутки; в противном случае используется функция SetScrollPos . Поскольку оно управляет перемещением полосы прокрутки, приложение может перемещать полосу прокрутки с шагом, наиболее подходящим для прокручиваемых данных.
Система скрывает и отключает стандартную полосу прокрутки, если указаны равные минимальные и максимальные значения. Система также скрывает и отключает стандартную полосу прокрутки, если вы указываете размер страницы, включающий весь диапазон прокрутки полосы прокрутки. Это способ временно скрыть полосу прокрутки, когда она не нужна для содержимого клиентской области. Нет необходимости делать запросы на прокрутку через полосу прокрутки, когда она скрыта. Система включает полосу прокрутки и показывает ее снова, когда вы устанавливаете минимальное и максимальное значения неравными значениям и когда размер страницы не включает весь диапазон прокрутки. Функция ShowScrollBar также может использоваться для скрытия или отображения полосы прокрутки. Это не влияет на диапазон полосы прокрутки, размер страницы или положение полосы прокрутки.
Функция EnableScrollBar может использоваться для отключения одной или обеих стрелок полосы прокрутки. Приложение отображает отключенные стрелки серым цветом и не отвечает на действия пользователя.
Пользователь отправляет запросы на прокрутку, щелкая различные части полосы прокрутки. Система отправляет запрос в указанное окно в виде WM_HSCROLL или WM_VSCROLL сообщение. Горизонтальная полоса прокрутки отправляет сообщение WM_HSCROLL ; вертикальная полоса прокрутки отправляет сообщение WM_VSCROLL . Каждое сообщение включает код запроса, соответствующий действию пользователя, дескриптору полосы прокрутки (только элементы управления полосой прокрутки) и, в некоторых случаях, положению полосы прокрутки.
На следующей диаграмме показан код запроса, который генерирует пользователь при нажатии различных частей полосы прокрутки.
Значения SB_ определяют действия, предпринимаемые пользователем. Приложение проверяет коды, сопровождающие сообщения WM_HSCROLL и WM_VSCROLL , а затем выполняет соответствующую операцию прокрутки. В следующей таблице для каждого значения указано действие пользователя, за которым следует ответ приложения. В каждом случае единица измерения определяется приложением в соответствии с данными. Например, типичной единицей вертикальной прокрутки текста является строка текста.
Запрос | Действие | Ответ |
---|---|---|
SB_LINEUP | Пользователь щелкает верхнюю стрелку прокрутки. | Уменьшает позицию бегунка прокрутки; прокручивается к началу данных на одну единицу. |
SB_LINEDOWN | Пользователь щелкает нижнюю стрелку прокрутки. | Увеличивает положение полосы прокрутки; прокручивает данные вниз на одну единицу. |
SB_LINELEFT | Пользователь щелкает стрелку прокрутки влево. | Уменьшает позицию бегунка прокрутки; прокручивается к левому краю данных на одну единицу. |
SB_LINERIGHT | Пользователь щелкает стрелку прокрутки вправо. | Увеличивает положение полосы прокрутки; прокручивает данные к правому краю на одну единицу. |
SB_PAGEUP | Пользователь щелкает ось полосы прокрутки над полем прокрутки. | Уменьшает позицию полосы прокрутки на количество единиц данных в окне; прокручивается к началу данных на такое же количество единиц. |
SB_PAGEDOWN | Пользователь щелкает стержень полосы прокрутки под полем прокрутки. | Увеличивает положение бегунка на количество единиц данных в окне; прокручивает вниз данных на такое же количество единиц. |
SB_PAGELEFT | Пользователь щелкает ось полосы прокрутки слева от поля прокрутки. | Уменьшает позицию полосы прокрутки на количество единиц данных в окне; прокручивается к левому краю данных на такое же количество единиц. |
SB_PAGERIGHT | Пользователь щелкает ось полосы прокрутки справа от поля прокрутки. | Увеличивает положение бегунка на количество единиц данных в окне; прокручивается к правому краю данных на такое же количество единиц. |
SB_THUMBPOSITION | Пользователь отпускает ползунок прокрутки после его перетаскивания. | Устанавливает ползунок в положение, указанное в сообщении; прокручивает данные на то же количество единиц, на которое переместилась полоса прокрутки. |
SB_THUMBTRACK | Пользователь перетаскивает ползунок прокрутки. | Устанавливает ползунок прокрутки в положение, указанное в сообщении, и прокручивает данные на то же количество единиц, на которое переместился ползунок прокрутки для приложений, которые быстро рисуют данные. Приложения, которые не могут быстро рисовать данные, должны ждать код запроса SB_THUMBPOSITION, прежде чем перемещать ползунок и прокручивать данные. |
SB_ENDSCROLL | Пользователь отпускает мышь, удерживая ее на стрелке или на оси полосы прокрутки. | Ответ не требуется. |
Полоса прокрутки генерирует код запроса SB_THUMBPOSITION и SB_THUMBTRACK, когда пользователь щелкает и перетаскивает ползунок прокрутки. Приложение должно быть запрограммировано для обработки кода запроса SB_THUMBTRACK или SB_THUMBPOSITION.
Код запроса SB_THUMBPOSITION возникает, когда пользователь отпускает кнопку мыши после нажатия на ползунок прокрутки. Приложение, обрабатывающее это сообщение, выполняет операцию прокрутки после того, как пользователь перетащит ползунок прокрутки в нужное положение и отпустит кнопку мыши.
Код запроса SB_THUMBTRACK возникает, когда пользователь перетаскивает ползунок прокрутки. Если приложение обрабатывает коды запросов SB_THUMBTRACK, оно может прокручивать содержимое окна, когда пользователь перетаскивает ползунок прокрутки. Однако полоса прокрутки может генерировать много кода запроса SB_THUMBTRACK за короткий период, поэтому приложение должно обрабатывать эти коды запроса, только если оно может быстро перерисовать содержимое окна.
Элемент управления полосы прокрутки предоставляет встроенный интерфейс клавиатуры, который позволяет пользователю выполнять запросы на прокрутку с помощью клавиатуры; стандартная полоса прокрутки — нет. Когда элемент управления полосы прокрутки имеет фокус клавиатуры, он отправляет WM_HSCROLL и WM_VSCROLL сообщения своему родительскому окну, когда пользователь нажимает клавиши со стрелками. Код запроса отправляется с каждым сообщением, соответствующим клавише со стрелкой, которую нажал пользователь. Ниже приведены клавиши со стрелками и соответствующие им коды запросов.
Клавиша со стрелкой | Код запроса |
---|---|
ВНИЗ | SB_LINEDOWN или SB_LINERIGHT |
КОНЕЦ | SB_BOTTOM |
ДОМ | SB_TOP |
ЛЕВЫЙ | SB_LINEUP или SB_LINELEFT |
ПГДН | SB_PAGEDOWN или SB_PAGERIGHT |
ПГУП | SB_PAGEUP или SB_PAGELEFT |
СПРАВА | SB_LINEDOWN или SB_LINERIGHT |
УП | SB_LINEUP или SB_LINELEFT |
Примечание
Клавиатурный интерфейс элемента управления полосы прокрутки отправляет коды запроса SB_TOP и SB_BOTTOM. Код запроса SB_TOP указывает, что пользователь достиг верхнего значения диапазона прокрутки. Приложение прокручивает содержимое окна вниз, чтобы была видна верхняя часть объекта данных. Код запроса SB_BOTTOM указывает, что пользователь достиг нижнего значения диапазона прокрутки. Если приложение обрабатывает код запроса SB_BOTTOM, оно прокручивает содержимое окна вверх, чтобы была видна нижняя часть объекта данных.
Если вам нужен клавиатурный интерфейс для стандартной полосы прокрутки, вы можете создать его самостоятельно, обработав сообщение WM_KEYDOWN в своей оконной процедуре, а затем выполнив соответствующее действие прокрутки на основе кода виртуальной клавиши, сопровождающего сообщение. . Сведения о том, как создать интерфейс клавиатуры для полосы прокрутки, см. в разделе Создание интерфейса клавиатуры для стандартной полосы прокрутки.
Самый простой способ прокрутить содержимое клиентской области — стереть его, а затем перерисовать. Это метод, который приложение, скорее всего, будет использовать с кодами запросов SB_PAGEUP, SB_PAGEDOWN и SB_TOP, которые обычно требуют совершенно нового содержимого.
Для некоторых кодов запроса, таких как SB_LINEUP и SB_LINEDOWN, не все содержимое нужно стирать, поскольку часть остается видимой после прокрутки. Функция ScrollWindowEx сохраняет часть содержимого клиентской области, перемещает сохраненную часть на указанную величину, а затем подготавливает остальную часть клиентской области для рисования новой информации. ScrollWindowEx использует функцию BitBlt для перемещения определенной части объекта данных в новое место в клиентской области. Любая непокрытая часть клиентской области (все, что не сохранилось) становится недействительной, стирается и закрашивается, когда следующие Появляется сообщение WM_PAINT .
Функцию ScrollWindowEx можно использовать для исключения части клиентской области из операции прокрутки. Это предотвращает перемещение элементов с фиксированным положением, таких как дочерние окна, в клиентской области. Он автоматически делает недействительной часть клиентской области, которая должна получить новую информацию, поэтому приложению не нужно вычислять свои собственные области отсечения. Дополнительные сведения об отсечении см. в разделе Отсечение.
Обычно приложение прокручивает содержимое окна в направлении, противоположном указанному полосой прокрутки. Например, когда пользователь щелкает стержень полосы прокрутки в области под полем прокрутки, приложение прокручивает объект в окне вверх, чтобы показать часть объекта, которая находится ниже видимой части.
Вы также можете прокручивать прямоугольную область, используя функцию ScrollDC .
Определяемое системой значение цвета COLOR_SCROLLBAR управляет цветом в полосе прокрутки. Используйте функцию GetSysColor , чтобы определить цвет оси полосы прокрутки, и функцию SetSysColors , чтобы установить цвет оси полосы прокрутки. Обратите внимание, однако, что это изменение цвета влияет на все полосы прокрутки в системе.
Вы можете получить размеры растровых изображений, которые система использует в стандартных полосах прокрутки, вызвав Функция GetSystemMetrics . Ниже приведены значения системных метрик, связанные с полосами прокрутки.
Системная метрика | Описание |
---|---|
SM_CXHSCROLL | Ширина растрового изображения стрелки на горизонтальной полосе прокрутки |
SM_CXHTHUMB | Ширина полосы прокрутки на горизонтальной полосе прокрутки. Это значение возвращает ширину полосы прокрутки с нулевым размером страницы. |
SM_CXVSCROLL | Ширина растрового изображения стрелки на вертикальной полосе прокрутки |
SM_CYHSCROLL | Высота растрового изображения стрелки на горизонтальной полосе прокрутки |
SM_CYVSCROLL | Высота растрового изображения стрелки на вертикальной полосе прокрутки |
SM_CYVTHUMB | Высота полосы прокрутки на вертикальной полосе прокрутки. Это значение возвращает высоту полосы прокрутки с нулевым размером страницы. |
::-webkit-scrollbar — CSS: каскадные таблицы стилей
Нестандартный: Эта функция является нестандартной и не соответствует стандартам. Не используйте его на рабочих сайтах, выходящих в Интернет: он не будет работать для каждого пользователя. Также могут быть большие несовместимости между реализациями, и поведение может измениться в будущем.
Псевдоэлемент CSS ::-webkit-scrollbar
влияет на стиль полосы прокрутки элемента, когда она имеет overflow:scroll;
набор.
Примечание: Если переполнение: прокрутка;
не установлен, полоса прокрутки не отображается.
Примечание: ::-webkit-scrollbar
доступен только в браузерах на основе Blink и WebKit (например, Chrome, Edge, Opera, Safari, всех браузерах на iOS и других). Стандартизированный метод стилизации полос прокрутки доступен с scrollbar-color
и scrollbar-width
, но в настоящее время поддерживается только в Firefox.
Вы можете использовать следующие псевдоэлементы для настройки различных частей полосы прокрутки для браузеров WebKit:
-
::-webkit-scrollbar
— вся полоса прокрутки. -
::-webkit-scrollbar-button
— кнопки на полосе прокрутки (стрелки вверх и вниз, прокручивающие по одной строке). -
::-webkit-scrollbar:horizontal{}
— горизонтальная полоса прокрутки. -
::-webkit-scrollbar-thumb
— перетаскиваемый маркер прокрутки. -
::-webkit-scrollbar-track
— дорожка (прогрессбар) полосы прокрутки, где есть серая полоса поверх белой. -
::-webkit-scrollbar-track-piece
— часть дорожки (прогрессбара), не закрытая ручкой. -
::-webkit-scrollbar:vertical{}
— вертикальная полоса прокрутки. -
::-webkit-scrollbar-corner
— нижний угол полосы прокрутки, где сходятся горизонтальная и вертикальная полосы прокрутки. Часто это правый нижний угол окна браузера. -
::-webkit-resizer
— перетаскиваемый маркер изменения размера, который появляется в нижнем углу некоторых элементов.
CSS
.visible-scrollbar, .невидимая полоса прокрутки, .в основном настроенная полоса прокрутки { дисплей: блок; ширина: 10см; переполнение: авто; высота: 2см; } .invisible-scrollbar::-webkit-scrollbar { дисплей: нет; } /* Демонстрация «в основном настроенной» полосы прокрутки * (иначе не будет видно, если указана ширина/высота) */ .основная-настраиваемая-полоса прокрутки::-webkit-scrollbar { ширина: 5 пикселей; высота: 8 пикселей; цвет фона: #ааа; /* или добавить его в трек */ } /* Добавляем большой палец */ .в основном настроенная полоса прокрутки::-webkit-scrollbar-thumb { фон: #000; }
HTML
Etiam sagittis sem sed lacus laoreet, eu fermentum eros auctor. Proin в нуль elementum, consectetur ex eget, commodo ante. Сед эрос ми, бибендум ут dignissim et, maximus eget nibh. Phasellus blandit quam turpis, at mollis велит претиум ут. Nunc consequat efficitur ultrices. Nullam hendrerit posuere est. Nulla libero sapien, egestas ac felis porta, cursus ultricies quam. Vestibulum tincidunt accumsan sapien, fringilla dui semper in. Vivamus consectetur ipsum a ornare blandit. Aenean tempus at lorem sit amet faucibus. Curabitur nibh justo, faucibus sed velit cursus, mattis cursus dolor. Pellentesque id pretium est. Quisque convallis nisi a diam malesuada mollis. Aliquam и enim ligula.<дел> Это какееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее