Прокрутка с исчезновением

Утилиты для добавления эффекта затухания к краям контейнера прокрутки.

Утилита scroll-fade состоит исключительно из CSS и основана на shadcn/scroll-fade. Никаких расширений для rxconfig.py не требуется, поскольку он использует синтаксис Tailwind v4.

Установка

Если ваш проект был настроен с помощью buridan init, у вас уже есть прокрутка. Он поставляется с пакетом buridan, который CLI импортирует в ваш глобальный файл CSS.

В противном случае установите пакет buirdan:

uv run buridan init

Использование

Класс Стили
scroll-fade mask-image: var(--scroll-fade-mask, var(--scroll-fade-block));
animation-timeline: scroll(self y);
scroll-fade-y mask-image: var(--scroll-fade-mask, var(--scroll-fade-block));
animation-timeline: scroll(self y);
scroll-fade-x mask-image: var(--scroll-fade-mask, var(--scroll-fade-inline));
animation-timeline: scroll(self inline);
scroll-fade-t Маска затухания на верхнем крае.
animation-timeline: scroll(self y);
scroll-fade-b Маска затемнения по нижнему краю.
animation-timeline: scroll(self y);
scroll-fade-l Маска затухания на левом краю.
animation-timeline: scroll(self x);
scroll-fade-r Маска затухания на правом краю.
animation-timeline: scroll(self x);
scroll-fade-s Маска затухания на начальном крае, зеркальное отображение в RTL.
animation-timeline: scroll(self inline);
scroll-fade-e Маска исчезновения на конце края, зеркала в RTL.
animation-timeline: scroll(self inline);
scroll-fade-<number> --scroll-fade-size: calc(var(--spacing) * <number>);
scroll-fade-[<value>] --scroll-fade-size: <value>;
scroll-fade-{t,b,s,e}-<number> --scroll-fade-{t,b,s,e}-size: calc(var(--spacing) * <number>);
scroll-fade-{t,b,s,e}-[<value>] --scroll-fade-{t,b,s,e}-size: <value>;
scroll-fade-none --scroll-fade-mask: none;

Добавьте scroll-fade или scroll-fade-y в контейнер прокрутки, т. е. элемент, имеющий overflow-y-auto.

Затухание учитывает прокрутку и отслеживает положение прокрутки:

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

Затухание применяется с помощью mask-image, поэтому оно растворяет сам контент, а не накладывает цвет. Маска использует линейное затухание от прозрачного к черному, поэтому она адаптируется к любому фону без необходимости настройки. Если ваша область прокрутки находится внутри карточки, поместите фон и рамку на обертку, а scroll-fade — на внутренний скроллер, чтобы затухание растворяло содержимое, а не карточку.

Прокрутка демо-версии Fade

Item 1
Item 2
Item 3
Item 4
Item 5
Item 6
Item 7
Item 8
Item 9
Item 10
Item 11
Item 12

Нет переполнения, нет исчезновения

Если содержимое не выходит за пределы, затухание не отображается. Вы можете применить scroll-fade к любому списку, не проверяя, прокручивается ли он.

Item 1
Item 2
Item 3

Горизонтальная прокрутка

Используйте scroll-fade-x для контейнеров, которые прокручиваются горизонтально, то есть для элемента, имеющего overflow-x-auto.

Design
Engineering
Marketing
Product
Research
Sales
Support
Operations
Finance
Legal
People
Security

Краевые затухания

Используйте утилиты Edge, когда только один край должен отслеживать положение прокрутки.

Inbox triage
Design review
API contract
QA pass
Launch notes
Metrics follow-up

scroll-fade-t

Inbox triage
Design review
API contract
QA pass
Launch notes
Metrics follow-up

scroll-fade-b

Design
Engineering
Marketing
Product
Research
Sales
Support
Operations

scroll-fade-s

Design
Engineering
Marketing
Product
Research
Sales
Support
Operations

scroll-fade-e

Edge-утилиты поддерживают прокрутку. Начальные края исчезают после прокрутки от начала, а конечные края исчезают, когда вы достигаете конца. Используйте scroll-fade-t, scroll-fade-b, scroll-fade-l и scroll-fade-r для физических границ. Используйте scroll-fade-s и scroll-fade-e для логических встроенных ребер.

Размер исчезновения

Глубина затухания по умолчанию равна 12% контейнера и ограничена 40 пикселями, поэтому высокие скроллеры остаются незаметными. Вместо этого используйте scroll-fade-<number>, чтобы установить фиксированный размер шкалы интервалов, так же, как работает scroll-mt-<number>.

Item 1
Item 2
Item 3
Item 4
Item 5
Item 6
Item 7
Item 8

scroll-fade-4

Item 1
Item 2
Item 3
Item 4
Item 5
Item 6
Item 7
Item 8

scroll-fade-24

Для одноразовых значений используйте произвольную длину или процент:

rx.el.div(..., class_name="scroll-fade overflow-y-auto scroll-fade-[15%]")

Чтобы затухать противоположные края на разную величину, используйте модификаторы для каждого края scroll-fade-t-<number>, scroll-fade-b-<number>, scroll-fade-s-<number> и scroll-fade-e-<number>. Они переопределяют Scroll-fade- на целевом крае, а также принимают произвольные значения.

rx.el.div(..., class_name="scroll-fade overflow-y-auto scroll-fade-b-8 scroll-fade-t-2")

Отключение фейда

Используйте scroll-fade-none, чтобы убрать затухание. Он работает в любом порядке классов, поэтому типичное использование — адаптивное или с сохранением состояния.

Item 1
Item 2
Item 3
Item 4
Item 5
Item 6
Item 7
Item 8

scroll-fade

Item 1
Item 2
Item 3
Item 4
Item 5
Item 6
Item 7
Item 8

scroll-fade scroll-fade-none

Резервный вариант

Поведение с учетом прокрутки реализовано с помощью CSS scroll-driven animations, без использования JavaScript и прослушивателей прокрутки. В браузерах, которые не поддерживают анимацию, управляемую прокруткой, scroll-fade возвращается к статическому затуханию по обоим краям, а утилиты Edge возвращаются к статическому затуханию по выбранному краю.

Поскольку маска применяется к самому контейнеру прокрутки, видимая полоса прокрутки исчезает вместе с содержимым по краям. Соедините scroll-fade с no-scrollbar, который поставляется в одном пакете, если вы хотите полностью скрыть полосу прокрутки.