基础
安装
npm install htmx.org
工作原理
HTML-driven通过 HTML 属性发起 AJAX,无需写 JS
Swap content服务端返回 HTML 片段,htmx 替换到页面
Progressive增强标准 HTML;优雅降级
REST-friendly兼容任意服务端框架
属性
核心请求属性
hx-get="/url"向 URL 发起 GET 请求
hx-post="/url"向 URL 发起 POST 请求
hx-put="/url"向 URL 发起 PUT 请求
hx-patch="/url"向 URL 发起 PATCH 请求
hx-delete="/url"向 URL 发起 DELETE 请求
行为属性
hx-trigger触发请求的事件
hx-target将响应内容替换到哪个元素
hx-swap如何替换响应内容
hx-select从响应 HTML 中选取子集
hx-vals向请求添加额外参数
hx-confirm请求前显示确认对话框
hx-disable禁用元素上的 htmx 处理
触发器
触发器语法
Feed
触发器修饰符
changed仅值变化时触发
delay:Ns等待 N 秒后触发
throttle:Nms每 N 毫秒最多触发一次
once仅触发一次
from:selector监听另一个元素的事件
every Ns每 N 秒轮询一次
load元素加载时触发
revealed元素滚动进入视口时触发
目标
目标选择
目标关键字
this元素自身(默认)
closest <sel>匹配选择器的最近祖先
find <sel>第一个匹配选择器的后代
next <sel>匹配选择器的下一个兄弟
previous <sel>匹配选择器的上一个兄弟
替换策略
替换方式
innerHTML替换内部内容(默认)
outerHTML替换整个目标元素
afterbegin在目标内部开头插入
beforeend在目标内部末尾追加
beforebegin在目标前插入
afterend在目标后插入
delete移除目标元素
none不替换,仅触发事件
替换修饰符
请求头
请求头(htmx 发送)
HX-Requesthtmx 请求始终为 "true"
HX-Target目标元素的 ID
HX-Trigger触发元素的 ID
HX-Trigger-Name触发元素的 name
HX-Current-URL浏览器当前 URL
HX-Prompthx-prompt 的用户输入
响应头(服务端发送)
HX-Redirect客户端重定向到 URL
HX-Refresh值为 "true" 时整页刷新
HX-Retarget覆盖 hx-target,用 CSS 选择器
HX-Reswap覆盖 hx-swap 策略
HX-Trigger触发客户端事件
HX-Push-Url将 URL 推入浏览器历史
事件
生命周期事件
htmx:configRequest请求前;可修改参数/头
htmx:beforeRequestAJAX 调用前
htmx:afterRequest请求完成后
htmx:beforeSwap内容替换前
htmx:afterSwap内容替换后
htmx:afterSettleDOM 从替换中稳定后
htmx:responseError服务器返回错误状态
监听事件
document.body.addEventListener("htmx:afterSwap", (e) => { console.log("Swapped:", e.detail.target); }); // Cancel a request document.body.addEventListener("htmx:configRequest", (e) => { if (!confirm("Proceed?")) e.preventDefault(); });
扩展
使用扩展
常用扩展
json-enc将请求体编码为 JSON
loading-states管理加载状态 CSS 类
head-support合并响应中的 标签
preload鼠标按下/悬停时预加载链接
sseServer-Sent Events 支持
wsWebSocket 支持
response-targets错误响应使用不同目标
加载指示器
加载指示器
Loading...
指示器 CSS
.htmx-indicator { display: none; } .htmx-request .htmx-indicator { display: inline; } .htmx-request.htmx-indicator { display: inline; }

请求期间 htmx 会给元素添加 htmx-request 类

请求期间禁用

hx-disabled-elt 在请求期间添加 disabled 属性

常用模式
实时搜索
#results" />
无限滚动
Loading more...
带确认的删除
内联编辑
Click to edit this text