事件 - htmx:beforeTransition

htmx:beforetransition 是 HTMX 提供的事件之一,它在 HTMX 执行页面内容过渡动画(transition)之前触发。这个事件允许你在元素即将被过渡时,插入自定义逻辑,比如添加类名、取消动画或修改数据。

事件参数

  • detail.elt - 发送请求的元素
  • detail.xhr - XMLHttpRequest
  • detail.requestConfig - AJAX请求的配置
  • detail.shouldSwap - 是否交换内容(非 200 响应代码的默认值为 false )
  • detail.target - 交换的目标

事件说明

属性 说明
事件名 htmx:beforetransition
触发时机 在 swap 动画(如 fade、scroll、none 等)执行前
可取消(cancelable) 是的,调用 event.preventDefault() 可阻止过渡执行
常见用途 自定义动画准备、条件阻止过渡、添加过渡类等

示例:在过渡前添加类名

<div id="content" hx-get="/new-content" hx-target="#content" hx-swap="outerHTML transition:true">
  点击我加载内容
</div>

<script>
  document.body.addEventListener("htmx:beforetransition", function (event) {
    console.log("即将发生过渡动画:", event.detail);
    
    const target = event.detail.target;
    target.classList.add("fade-out"); // 添加自定义 CSS 动画准备类
  });
</script>

这个事件通常会配合 hx-swap="transition:true" 使用。

阻止过渡动画

document.body.addEventListener("htmx:beforetransition", function (event) {
  const shouldSkip = someLogicCheck();
  if (shouldSkip) {
    event.preventDefault(); // 阻止过渡动画
  }
});