<div x-data="{ expanded: false }"> <button x-on:click="expanded = !expanded">Переключить содержимое</button> <div x-show="expanded" x-collapse> <div class="pt-4"> Reprehenderit eu excepteur ullamco esse cillum reprehenderit exercitation labore non. Dolore dolore ea dolore veniam sint in sint ex Lorem ipsum. Sint laborum deserunt deserunt amet voluptate cillum deserunt. Amet nisi pariatur sit ut id. Ipsum est minim est commodo id dolor sint id quis sint Lorem. </div> </div></div>
Collapse
Плагин Collapse позволяет разворачивать и сворачивать элементы с помощью плавной анимации.
Поскольку такое поведение и реализация отличаются от стандартной системы переходов Alpine, эта функциональность была выделена в специальный плагин.
Вы можете использовать этот плагин, включив его из тега <script>
или установив с помощью менеджера пакетов.
Вы можете подключить CDN-сборку этого плагина с помощью тега <script>
, только подключать нужно ДО основного JS-файла Alpine.
<!-- Collapse Plugin --><script defer src="https://cdn.jsdelivr.net/npm/@alpinejs/collapse@3/dist/cdn.min.js"></script>
<!-- Alpine Core --><script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3/dist/cdn.min.js"></script>
<!-- Collapse Plugin --><script defer src="https://unpkg.com/@alpinejs/collapse@latest/dist/cdn.min.js"></script>
<!-- Alpine Core --><script defer src="https://unpkg.com/alpinejs@3/dist/cdn.min.js"></script>
Вы можете установить Collapse для использования внутри вашей сборки следующим образом:
npm i @alpinejs/collapse
pnpm add @alpinejs/collapse
yarn add @alpinejs/collapse
Затем инициализируйте его в своей сборке:
import Alpine from 'alpinejs';import collapse from '@alpinejs/collapse';
Alpine.plugin(collapse);Alpine.start();
Основным API для использования этого плагина является директива x-collapse
.
x-collapse
может существовать только в элементе, у которого уже есть директива x-show
. При добавлении к элементу x-show
, x-collapse
будет плавно «сворачивать» и «расширять» элемент, когда его видимость переключается путём анимации его свойства высоты.
Например:
Вы можете настроить продолжительность перехода свёртывания/развёртывания, добавив модификатор .duration
:
<div x-data="{ expanded: false }"> <button x-on:click="expanded = !expanded">Переключить содержимое</button> <div x-show="expanded" x-collapse.duration.3000ms> <div class="pt-4"> Reprehenderit eu excepteur ullamco esse cillum reprehenderit exercitation labore non. Dolore dolore ea dolore veniam sint in sint ex Lorem ipsum. Sint laborum deserunt deserunt amet voluptate cillum deserunt. Amet nisi pariatur sit ut id. Ipsum est minim est commodo id dolor sint id quis sint Lorem. </div> </div></div>
По умолчанию «свёрнутое» состояние x-collapse
устанавливает высоту элемента в 0px
, а также устанавливает display: none;
.
Иногда полезно «отрезать» элемент, а не полностью его скрывать. Используя модификатор .min
, вы можете установить минимальную высоту для «свёрнутого» состояния x-collapse
Например:
<div x-data="{ expanded: true }"> <button x-on:click="expanded = !expanded">Переключить содержимое</button> <div x-show="expanded" x-collapse.min.50px> <div class="pt-4"> Reprehenderit eu excepteur ullamco esse cillum reprehenderit exercitation labore non. Dolore dolore ea dolore veniam sint in sint ex Lorem ipsum. Sint laborum deserunt deserunt amet voluptate cillum deserunt. Amet nisi pariatur sit ut id. Ipsum est minim est commodo id dolor sint id quis sint Lorem. </div> </div></div>
-
С помощью какой директивы задействуется этот плагин?
-
Как указать продолжительность перехода свёртывания/развёртывания в 10 секунд?