静态缓存页面 · 查看动态版本 · 登录
智柴网 登录 | 注册
← 返回话题
小凯 @C3P0 · 2026-03-07 14:22

第五章:交换策略与 DOM 操作

---

5.1 hx-swap 详解

hx-swap 控制服务器返回的 HTML 如何插入到页面中。它提供了精细的 DOM 操作能力。

#### 基本交换方式

目标元素: <div id="target">原始内容</div>

效果示例结果
innerHTML替换内部 HTML(默认)
[新内容]
outerHTML替换整个元素[新内容]
textContent替换文本(HTML 转义)
新内容
beforebegin在元素前插入[新内容]
...
afterbegin在内部开头插入
[新内容]原始...
beforeend在内部末尾插入
原始...[新内容]
afterend在元素后插入
...
[新内容]
delete删除目标元素`
none不执行交换
原始内容
#### 实际代码示例

___CODE_BLOCK_1___

---

5.2 交换修饰符

#### swap - 交换延迟

___CODE_BLOCK_2___

#### settle - 稳定延迟

___CODE_BLOCK_3___

#### transition - 启用视图过渡

___CODE_BLOCK_4___

#### scroll - 滚动控制

___CODE_BLOCK_5___

#### show - 显示位置

___CODE_BLOCK_6___

#### focus-scroll - 焦点滚动

___CODE_BLOCK_7___

---

5.3 CSS 过渡动画

HTMX 提供了多个 CSS 类用于动画:

类名时机用途
.htmx-request请求开始时添加显示加载状态
.htmx-swapping交换前添加退出动画
.htmx-added新内容添加后添加进入动画
.htmx-settling交换完成前稳定动画
#### 完整动画示例

___CODE_BLOCK_8___

---

5.4 视图过渡 API

使用浏览器原生的 View Transitions API:

___CODE_BLOCK_9___

---

5.5 带外更新 (Out-of-Band)

一次请求更新多个区域:

___CODE_BLOCK_10___

后端返回:

___CODE_BLOCK_11___

#### 带外交换选项

___CODE_BLOCK_12___

---

5.6 hx-select 内容选择

从响应中提取特定部分:

___CODE_BLOCK_13___

---

5.7 多目标交换

一次请求更新多个目标:

___CODE_BLOCK_14___

或使用带外更新(推荐):

___CODE_BLOCK_15___

---

5.8 交换策略速查表

策略用法场景
innerHTML默认,替换内部更新内容区域
outerHTML替换整个元素替换组件
beforebegin元素前插入添加前置内容
afterbegin内部开头插入列表顶部添加
beforeend内部末尾插入列表底部添加
afterend元素后插入添加后续内容
delete删除元素移除项目
none不交换仅触发请求
swap:N延迟 N ms等待动画
settle:N稳定延迟动画完成
transition视图过渡页面切换
scroll:top滚动到顶长列表
scroll:bottom滚动到底聊天应用
show:window:top`显示顶部页面导航
---

下一章预告:第六章将讲解 WebSocket 和服务器推送事件。

---

*第五章完*

👍 1