Начало работы
Установка
Введите в своем терминале:
sh
# npm
npm i effsz
# pnpm
pnpm add effsz
# yarn
yarn add effszБыстрый старт
Вкратце, каждый контейнер - это веб-компонент, который должен быть определен перед использованием. Каждый модуль в этой библиотеке предоставляет такую функцию
useLimitизeffsz/limitопределяет контейнер, который ограничивает количество видимых дочерних элементов при его переполнении;useScrollизeffsz/scrollопределяет скролл-контейнер, устанавливающий свою собственную полосу прокрутки и тени, которые отображаются одинаково для разных браузеров;useSplitизeffsz/splitопределяет контейнер, разделяющий свою площадь между слотами, размер которых может быть изменен;useMasonryизeffsz/masonryопределяет контейнер, в котором на одной оси используется типичная строгая сетка, а на другой - схема размещения типаmasonry. Он отображает содержимое через слоты, и каждый слотовый элемент должен иметь атрибутslotс его порядковым индексом и значение соотношения сторон, определяемое либо с помощью свойстваaspect-ratioвнутри атрибутаstyle, либо с помощью атрибутаdata-effsz-ar. Компонент может быть полезен для отображения большого количества изображений с различными соотношениями сторон;useExpandизeffsz/expandопределяет контейнер, который может быть расширен или свернут до заданных размеров;useCarouselизeffsz/carouselопределяет контейнер-карусель;useSlideизeffsz/slideопределяет контейнер, который позволяет отображать его содержимое в виде диалогового окна, которое появляется (выскальзывает) из-за пределов экрана.
Каждая функция возвращает объект с обработчиками observe и unbserve для контроля за изменениями компонента.
Например, вы решили использовать Split container:
jsx
import { useEffect } from 'react';
import { useSplit } from 'effsz/split'
// определите пользовательский веб-компонент перед использованием
// обратите внимание, что для SSR функцию необходимо вызывать до того, как браузер проанализирует тело документа,
// поэтому вам может потребоваться добавить отдельный скрипт в заголовок документа
const { observe } = useSplit();
export const App = () => {
const ref = useRef();
useEffect(() => {
// вы можете подписаться на события компонента
const unobserve = observe((e) => {
// здесь идет обработка события
}, ref.current);
// и вы можете отписаться
return () => unobserve();
}, []);
// просто используйте веб-компонент в jsx
// все атрибуты описаны в интерфейсе ISplitContainerAttrs
return <div ref={ref}>
<effsz-split
ini='0.25 0.5'
min='0.25 0.25 0.1'
lmin='0.1'
fdir='rr'
>
<div class='first'>
...
</div>
<div class='second'>
...
</div>
<div class='last'>
...
</div>
</effsz-split>
</div>;
}Вот и все. Наслаждайтесь простотой.