Tools 是非官方社区Wiki。社区文档正在编写中,欢迎参与。 Wiki编辑答疑群:717421103
版本250722.2
全站通知:

Widget:MiniWaterfall

来自WIKI实验室WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

另一个瀑布流(代码完全由AI编写)

用法示例

<div class="smart-wf"
     data-wf-gap="16"           <!-- 水平/垂直间距(px),默认 16 -->
     data-wf-min="240"          <!-- 列最小宽度(px),默认 240 -->
     data-wf-col-width=""       <!-- 固定列宽(px),留空则用 data-wf-min 自适应列数 -->
     data-wf-max-cols=""        <!-- 最大列数(可选),如 6 -->
     data-wf-debounce="80"      <!-- 事件去抖(ms),默认 80 -->
     >
  <div>...</div>
  <div>...</div>
  <!-- 任意数量子项(建议块级元素),内部高度可动态变化(图片/懒加载/折叠等) -->
</div>
{{#Widget:MiniWaterfall}}

你可以怎么配置(data- 属性)

data-wf-gap:项与项之间的水平/垂直间距(px),默认 16。

data-wf-min:自适应列数时的“最小列宽”(px),默认 240。容器会在允许的宽度下尽可能多列,但不小于该宽度。

data-wf-col-width:固定列宽(px)。一旦设置,则按该宽度 + 间距推导列数。

data-wf-max-cols:最大列数(可选),例如 6。

data-wf-debounce:监听事件的去抖时间(ms),默认 80。

自动重排触发场景(已内置)

子项高度变化(图片加载、异步内容、折叠/展开等)→ ResizeObserver 逐项监听。

子项增删、类名/行内样式变化 → MutationObserver 监听。

容器宽度变化(父容器响应式变化)→ ResizeObserver 监听容器。

窗口尺寸变化 → resize 事件。

对于不支持 ResizeObserver 的老环境,内置轮询降级(200ms 一次)。

对外 API(可选)

// 全局可用
smartWF.init();                 // 初始化页面上所有 .smart-wf
smartWF.init(containerEl);      // 初始化指定容器
smartWF.layout();               // 强制重排所有容器
smartWF.layout(containerEl);    // 强制重排指定容器
smartWF.refresh();              // 重新读取 data-attr 并重建观察器(例如你动态改了 data-wf-*)
smartWF.destroy(containerEl);   // 移除监听(需要时)