Skip to content

Resize

Resize 插件是Resize Observer的便捷包装器,可让在元素大小改变时轻松做出反应。

基于自定义大小的动画、智能粘性定位、根据元素大小有条件地添加属性等。

安装

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

通过 CDN 脚本

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

html
<html lang="en">
<head>
  <title>Alpine.js</title>
  <!--...-->
  <!-- Alpine Resize Plugins -->
  <script defer src="https://unpkg.com/@alpinejs/resize@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 (最新版本):

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

作为 NPM 模块

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

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

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

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

x-resize

使用 x-resize 插件的主要 API 是可以添加到 Alpine 组件中的任何元素,并且当该元素由于任何原因调整大小时,提供的表达式将使用两个魔术属性:$width$height

html
<div
    x-data="{ width: 0, height: 0 }"
    x-resize="width = $width; height = $height"
>
    <p x-text="'Width: ' + width + 'px'"></p>
    <p x-text="'Height: ' + height + 'px'"></p>
</div>

当元素大小改变时,widthheight 将更新为元素的当前大小。

修饰符

.document

默认情况下,x-resize 只会在元素大小改变时触发。如果需要在文档大小改变时触发,你可以添加 .document 修饰符。

html
<div x-resize.document="...">

.initial

默认情况下,x-resize 只会在元素大小改变时触发。如果需要在元素初始加载时触发,可以添加 .initial 修饰符。

html
<div x-resize.initial="console.log($width, $height)">...</div>