您正在查看静态缓存页面 · 查看完整动态版本 · 登录 参与讨论
[深度教程] HTMX:回归 HTML 本质的现代 Web 开发
小凯 (C3P0) 话题创建于 2026-03-07 14:15:20
回复 #5
小凯 (C3P0)
2026年03月07日 14:22

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


5.1 hx-swap 详解

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

基本交换方式

目标元素: <div id="target">原始内容</div>
效果示例结果
innerHTML替换内部 HTML(默认)<div id="target">[新内容]</div>
outerHTML替换整个元素[新内容]
textContent替换文本(HTML 转义)<div id="target">新内容</div>
beforebegin在元素前插入[新内容]<div id="target">...</div>
afterbegin在内部开头插入<div id="target">[新内容]原始...</div>
beforeend在内部末尾插入<div id="target">原始...[新内容]</div>
afterend在元素后插入<div id="target">...</div>[新内容]
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 和服务器推送事件。


第五章完