Кастомизация скроллбаров в браузере

CAD обзор

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

  • Размер данных при прокрутке и минимальные вычисления JavaScript при изменениях
  • Кросс-браузерная функциональность и работающие программы для мобильного браузера
  • Простота в использовании, адаптации и развитии
  • Учет развертывания данных с наполнением контента
  • Обновление настроек линии прокатки при возможности обновления, изменения или пополнения содержимого
  • Обход поведения содержимого браузера по умолчанию при изменении ширины окна браузера

Введение. Функциональность прокатки системы.

Чтобы подкрепить что-то, приведу простой пример (см. на работе):.

  • Колесико мыши (некоторые мыши предлагают горизонтальную прокрутку в дополнение к вертикальной прокрутке)
  • Клавиши со стрелками (вверх, вниз, вправо, влево) при фокусировке на предмете
  • TouchPad (ощущается особая легкость и удовольствие от использования сенсорной панели компьютера Macintosh для обработки контента)
  • Сенсорные экраны планшетов и телефонов, компьютеры
  • Вы также можете выделять и прокручивать содержимое (такие функции предназначены для обозначения того, что не видно, например, крупного текста).
  • И непосредственно элементы линии прокрутки: слайдеры и кнопки.

Стоит ли делать полностью или частично JS, чтобы изменить внешний вид прокатных линий? Да: потому что появляются новые идеи по навигации контента, желание попробовать JS и т.д. Нет: браузеры уже делают все это, и вам нужно найти способ их использовать. Поэтому я расскажу об этом ниже.

Решение имеет следующую структуру в HTML

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

  • Корневой блок — это обертка для всего дизайна и определяет площадь и размер всего дизайна.
  • Viewports — этот блок ограничивает окно отображения содержимого.
  • SystemsCrolls — этот блок отвечает за сворачивание контента.
  • Contentswrap — этот блок является компенсирующим блоком (для следующей важности и возможностей).
  • Содержание — само содержание
  • vtrack и htrack — вертикальные и горизонтальные линии прокатки. В их содержании все понятно.

Основная нагрузка: функции сворачивания и изменения размера.

На мой взгляд, это самые «тяжелые» и раздражающие функции JavaScript. Почему; чтобы реализовать изменение размеров и сохранить пропорции программирования, необходимо работать с окнами. Вам нужно включить это событие и настроить размеры различных элементов и пропорции размеров при наступлении этого события (таким образом… ). Недостатком изменения размера таким способом является нестабильное (с небольшими временными лестницами для глаз) изменение размера. Была предпринята попытка сделать это. Это сильно давит на глаза, когда вы вложили всю душу в дизайн и сделали все интерфейсы максимально гладкими.

ЧИТАТЬ ЕЩЁ:  Python - основные концепции

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

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

О прокрутке. Чтобы реализовать прокрутку в настольных браузерах, необходимо обрабатывать события от колеса мыши и анализировать значения этих событий (помните, что некоторые мыши могут прокручивать содержимое как горизонтально, так и вертикально). Для мобильных браузеров необходимо обрабатывать события группы касаний. Это означает, что для кроссплатформенных решений эти две реализации должны быть запрограммированы. Однако прокрутку содержимого следует оставить на усмотрение браузера. Просто определите стиль элемента systemscrolls.

Скрыть системные полосы прокрутки и 22px

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

Первый вариант с переполнением легко понять, но если пользователь захочет выделить содержимое и начнет перетаскивать курсор в нужном направлении, могут появиться системные полосы прокрутки. Вариант клипа не страдает от этого, но в данном случае пришлось реализовать небольшой хак для поддержки ie7. Но это еще не все… Блок systemsscrolls имеет тот же размер, что и блок viewport. Это означает, что системная полоса прокрутки будет по-прежнему видна. Здесь используется ключевая точка ’22px’. Это сумма, которую регулирует блок systemsscrolls. Действительно, толщина полос прокрутки в большинстве распространенных браузеров составляет менее 21px. Сама установка выглядит следующим образом.

Полосы прокрутки скрыты и находятся за границами обрезанной области.

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

Контент-блок

Основная цель contentwrap — позволить отображать целые блоки содержимого в области просмотра. Он отображается из конца в конец в различных режимах прокрутки. Ранее JavaScript не требовался, но теперь он необходим для регулировки размера поля contentwrap.

ЧИТАТЬ ЕЩЁ:  SQL - универсальный язык для работы с базами данных

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

блоки vscroll и hscroll

vscroll и hscroll — это полосы прокрутки. Пока основная задача — «приклеить» их к краю и изменить размер и положение их дочерних элементов за счет браузера.

В этой записи нет ничего сложного. Перейдем к самой интересной части — бегуну.

Слайдеры.

  • Изменение положения ползунка при перемещении содержимого описанным выше способом.
  • Перетаскивание ползунка указателем мыши и реакция содержимого на эти действия
  • Изменение размера и сохранение положения регуляции при изменении размера содержимого по сравнению с размерами элемента или при изменении размера элемента (эта задача решается путем обновления параметров всего элемента, решение описано ниже).
Изменение положения регулирования при прокатке содержимого.

Это очень просто. Свойство Overflow: определив прокрутку в блоке SystemsCrolls, вы можете отлавливать события прокрутки в этом блоке. Когда происходит это событие, перемещайте ползунок в соответствии с расположением содержимого (свойства Scrollleft и Scrolltop) относительно левого верхнего угла. SystemsCrolls Блок блоков. Коэффициент пропорциональности, рассчитываемый функцией обновления компонентов (для)

Слайды.
  • Получение события MouseDown на самом бегунке.
  • Подключение событий MouseMove и MouseUp к элементу документа
  • Он обрабатывает document.mousemove, изменяет положение слайдера и поворачивает содержимое
  • Перехват событий document.mouseup — отключение событий Mousemove и Mouseup в документе
  • SystemsCrolls События прокрутки элементов. Происходит следующее: чтобы прокрутить содержимое с помощью JS, измените свойства ScrollLeft и Scrolltop блока SystemsCrolls, и изменение этих свойств вызовет событие прокрутки из этого блока. Это активирует алгоритм и изменяет положение регулятора при прокрутке содержимого, как описано выше.
  • Как только событие Mousedown будет задействовано в слайдере, отключите оператор прокрутки SystemsCrolls и измените ScrollLeft и Scrolltop SystemsSystemsCrolls Scrolltop во время прокрутки содержимого. Mousemove Необходимо переместить элемент модуляции в элемент документа.

Второй метод дает лучшие результаты. Функции отключения события SystemsCrolls.scroll и добавления вложения происходят только при (соответственно) Mousemove и Mouseup (соответственно) элемента документа. Поэтому обработка события document.usemove происходит быстрее и более оптимизирована (см. снимок экрана).

Обновление параметров компонента

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

  • Вертикальные расширения контента имеют приоритет над горизонтальными в браузере. Это означает, что при изменении ширины окна браузера (жесткого ограничения ширины контента нет), высота контента будет неограниченно увеличиваться, а ширина уменьшаться. В принципе, все разумно и удобно для пользователя, поскольку горизонтальная прокрутка окна браузера раздражает одновременно с вертикальной, и предпочтительнее расширять содержимое вертикально. Однако, когда речь идет о площади качения элементов интерфейса, вы хотите автоматически увеличить горизонтальную площадь качения, если это необходимо. Этот пятистрочный код также решает эту проблему. Браузер располагает элементы горизонтально, а затем решает, можно ли растянуть содержимое до нужного размера.
  • Инициализация.
  • Изменение размера окна браузера
  • Изменить контактные данные
ЧИТАТЬ ЕЩЁ:  SEO-копирайтинг в вопросах и ответах

Регулировка

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

  • Общие классы Scrollar-BTN, Scrollar-Track и Scrollar-Sumb могут быть использованы для определения общего стиля вертикальных и горизонтальных линий прокрутки (например, установка Scrollar-BTN< display: none;>(который можно использовать для скрытия кнопок), и
  • Scrollar-BTN и Scrollar-Track тесно связаны с родительским элементом Scrollar-Scroll. Это позволяет изменять размер и расположение, а также размер Scrollar-прокрутки из браузера.
  • Элементы Scrollar-Track не нужно стилизовать, так как они предназначены для определения области движения Scrollar-Sumb, но стили можно применять по мере необходимости.
  • Элементы идеально выровнены относительно Scrollar-Sumb (position: absolute) и могут легко позиционироваться относительно друг друга.

Но что если горизонтальная или вертикальная прокрутка не требуется?

Это легко. При инициализации элемента необходимо определить, какая прокрутка не требуется (по умолчанию обе видны). Видимость и прокрутка управляются путем добавления или удаления классов. Добавление этих классов также влияет на размер содержимого (например, при hscroll:false ширина содержимого автоматически изменяется от операций, выполняемых браузером).

Как я могу изменить содержание?

  • content («html», «abcd») — заменяет содержимое области прокрутки абзацем текста. Это приведет к обновлению параметров элемента, как только операция будет завершена.
  • content (). html («abcd») — результат тот же, что и в предыдущем примере, но содержимое обновляется за setinterval.

Ссылки на статьи:.

Адаптация — на этой странице вы можете увидеть некоторые варианты настройки, а также попробовать, как скроллинг реагирует на переключение окон браузера. Репозиторий, где можно найти все, что описано в статье на github-default styles — примеры произвольной настройки стилей safari — стилизация полосы прокрутки в стиле Mac OS 10.8

Заключение.

Стоит ли изобретать что-то новое? Конечно!!! Каждая новая идея имеет возможность повлиять на будущее (в данном случае на будущее юзабилити).

Оцените статью