You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Так как дизайн никак не документирует поведение полосы прокрутки и его ползунка, необходимо перейти на использование системного поведения, тем самым облегчить компонент CustomScrollView застилизовав его через CSS (https://caniuse.com/css-scrollbar).
Из BREAKING CHANGE это удаление параметров TrackerOptionsProps.
Преимущества
удалим DOM-элемет(-ы);
Их может быть два если включить и горизонтальный, и вертикальный скроллы.
На самом деле их больше чем два, а может остаться только один
удалим обработчики событий onwheel, onmousedown, onmouseleave, ondragstart, ondragstop;
удалим использование тяжёлого useResizeObserver(), что в целом улучшит производительность страницы, где используется CustomScrollView;
предупредим баги связанные с кастомным ползунком.
Например, сейчас у ползунка отсутствует взаимодействик на тач-события.
Вообще все нативные решения намного более устойчивы к багам
Удалим кучу лишнего кода, компонент станет максимально простым
Нюансы
Останется проблема, что в Firefox < 64 будет обычный скролл, а не застилизованный
* В версии ниже 64 будет виден скролл, но это не ломает функциональность.
*/
scrollbar-width: none;
}
Есть два способа кастомизации:
используя относительно новые свойства scrollbar-color и scrollbar-width у этих свойств поддержка в браузерах такая себе, в основном хорошо поддерживается в firefox, но например абсолютно не поддерживается в Safari
использую нестандартные свойства с префиксом -webkit-.. такие как -webkit-scrollbar у этих свойств ситуация противоположная. Поддержка говорит, что поддерживается хорошо везде, кроме Firefox(там вообще нет)
Исходя из этого надо использовать оба подхода сразу, чтобы покрыть все браузеры. НО, если браузер поддерживает оба способа кастомизации скролла(например последние версии Chrome) то первый способ будет полностью перебивать второй. Возможно не так критично, но все же не всегда очевидно
Есть проблема с кастомизацией. Через scrollbar-color, scrollbar-width особо не кастомизировать ничего кроме цвета и ширины(причем только 2 варианта размера есть). А также если кастомизировать через webkit псевдоклассы, то там возможностей побольше, но все равно не идеально. Например плавное изменение размера или смена фону при наведении на thumb реализовать невозможно. Будет меняться довольно резко. И кстати смену размера можно сделать только через небольшой костыль с бордерами.
Также при кастомизации через ::webkit у thumb нельзя задать opacity, но можно задать сразу цвет с прозрачностью. В таком случае надо добавлять такой токен, или искать более менее подходящий для этого из имеющихся. Сейчас используется токен без прозрачности и добавляется прозрачность через opacity
Нельзя сделать реально прозрачным пространство под thumb, то есть scrollbar-track. Даже если задать цвет transparent, он все равно будет сполшным белым и будет наезжать на контент
The text was updated successfully, but these errors were encountered:
inomdzhon
changed the title
[BREAKING CHANGE] HorizontalCell
[BREAKING CHANGE][CustomScrollView]: перейти на CSS-way решение для стилизации ползунка
Oct 2, 2024
Было бы клёво предупредить о кейсах, где нативные скроллбары немного всё сломают.
Например, скролл теперь не сможет быть поверх контента, а скачки ширины вьюпорта при появлении оверфлоу станут неизбежными.
Так как дизайн никак не документирует поведение полосы прокрутки и его ползунка, необходимо перейти на использование системного поведения, тем самым облегчить компонент CustomScrollView застилизовав его через CSS (https://caniuse.com/css-scrollbar).
Из BREAKING CHANGE это удаление параметров
TrackerOptionsProps
.Преимущества
удалим DOM-элемет(-ы);
удалим обработчики событий
onwheel
,onmousedown
,onmouseleave
,ondragstart
,ondragstop
;удалим использование тяжёлого
useResizeObserver()
, что в целом улучшит производительность страницы, где используется CustomScrollView;предупредим баги связанные с кастомным ползунком.
Удалим кучу лишнего кода, компонент станет максимально простым
Нюансы
VKUI/packages/vkui/src/components/CustomScrollView/CustomScrollView.module.css
Lines 129 to 135 in ccb6246
Исходя из этого надо использовать оба подхода сразу, чтобы покрыть все браузеры. НО, если браузер поддерживает оба способа кастомизации скролла(например последние версии Chrome) то первый способ будет полностью перебивать второй. Возможно не так критично, но все же не всегда очевидно
Есть проблема с кастомизацией. Через scrollbar-color, scrollbar-width особо не кастомизировать ничего кроме цвета и ширины(причем только 2 варианта размера есть). А также если кастомизировать через webkit псевдоклассы, то там возможностей побольше, но все равно не идеально. Например плавное изменение размера или смена фону при наведении на thumb реализовать невозможно. Будет меняться довольно резко. И кстати смену размера можно сделать только через небольшой костыль с бордерами.
Также при кастомизации через ::webkit у thumb нельзя задать opacity, но можно задать сразу цвет с прозрачностью. В таком случае надо добавлять такой токен, или искать более менее подходящий для этого из имеющихся. Сейчас используется токен без прозрачности и добавляется прозрачность через opacity
Нельзя сделать реально прозрачным пространство под thumb, то есть scrollbar-track. Даже если задать цвет transparent, он все равно будет сполшным белым и будет наезжать на контент
Ссылки
The text was updated successfully, but these errors were encountered: