Skip to content

Collapse

Alpine.js 的 Collapse 插件允许使用流畅的动画展开和折叠元素。

因为这个行为和实现不同于 Alpine 的标准转换系统,所以这个功能被制作成一个专用插件。

安装

跟 Alpine.js 的安装一样, Collapse 插件同样支持从 <script> 脚本标签引用它或者将其作为模块导入。

通过 CDN 脚本

在 HTML 页面的头部包含以下 <script> 标签

html
<html lang="en">
<head>
  <title>Alpine.js</title>
  <!--...-->
  <!-- Alpine Collapse Plugins -->
  <script defer src="https://unpkg.com/@alpinejs/collapse@3.x.x/dist/cdn.min.js"></script>
  
  <script defer src="https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js"></script>
</head>
<!--...-->
</html>

生产环境中,建议在链接中锁定特定版本号,以避免新版本中的变更造成问题。

例如,锁定版本为 3.14.1 (最新版本):

html
<!-- Alpine Plugins -->
<script defer src="https://unpkg.com/@alpinejs/collapse@3.14.1/dist/cdn.min.js"></script>

作为 NPM 模块

可以通过 npm / yarn 安装 Collapse 并将其导入到一个包中。 运行以下命令来安装它:

bash
yarn add @alpinejs/collapse
bash
npm install @alpinejs/collapse

现在将 Mask 导入到包中并像这样初始化它:

javascript
import Alpine from 'alpinejs'
import collapse from '@alpinejs/collapse'
 
Alpine.plugin(collapse) 
Alpine.start()

x-collapse

x-collapse 只能存在于已经有 x-show 指令的元素上。

当添加到一个 x-show 元素时,当通过 x-collapse 指令改变高度属性切换元素的可见性时,将平滑地“折叠”和“展开”元素。

html
<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport"
        content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Alpine.js Collapse Plugin.</title>
  <script defer src="https://unpkg.com/@alpinejs/collapse@3.x.x/dist/cdn.min.js"></script>

  <script defer src="https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js"></script>
</head>
<body>
    <div x-data="{ expanded: false }">
        <button @click="expanded = ! expanded">Toggle Content</button>
     
        <p x-show="expanded" x-collapse>
            ...
        </p>
    </div>
</body>
</html>

修饰符

.duration

可以通过附加修饰符 .duration 来自定义折叠/展开过渡的持续时间:

html
<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport"
        content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Alpine.js Collapse Plugin.</title>
  <script defer src="https://unpkg.com/@alpinejs/collapse@3.x.x/dist/cdn.min.js"></script>

  <script defer src="https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js"></script>
</head>
<body>
    <div x-data="{ expanded: false }">
        <button @click="expanded = ! expanded">Toggle Content</button>
     
        <p x-show="expanded" x-collapse.duration.1000ms>
            ...
        </p>
    </div>
</body>
</html>

.min

默认情况下,x-collapse 的“折叠”状态是将元素的高度设置为 0px 并设置 display: none; 属性

一些场景下,“切断”元素比完全隐藏它更有帮助。通过使用 .min 修饰符可以为“折叠”状态的元素设置最小高度。

html
<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport"
        content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Alpine.js Collapse Plugin.</title>
  <script defer src="https://unpkg.com/@alpinejs/collapse@3.x.x/dist/cdn.min.js"></script>

  <script defer src="https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js"></script>
</head>
<body>
    <div x-data="{ expanded: false }">
        <button @click="expanded = ! expanded">Toggle Content</button>
     
        <p x-show="expanded" x-collapse.min.50px>
            ...
        </p>
    </div>
</body>
</html>