alpine.js 的 x-transition 指令仅支持与 x-show 配合使用,无法直接作用于 x-bind 触发的属性变更(如 src);要实现图片切换的过渡动画,需改用条件渲染 + x-show + x-transition 的组合方案。
在 Alpine.js 中,x-transition 的设计初衷是控制元素的显隐状态过渡,其底层依赖 x-show 对 display 样式的切换,并配合 CSS 类(如 enter, leave 等)实现动画。而 x-bind:src 仅更新 DOM 属性,不触发显示/隐藏的生命周期,因此直接在其上添加 x-transition 不会产生任何效果——这并非 Bug,而是指令职责的明确划分。
✅ 正确做法:用两个 元素分别代表“悬停态”和“默认态”,通过 x-show 控制其显隐,并为二者均添加 x-transition:
@@##@@
@@##@@
? 关键要点:
布尔状态(如 hover)驱动 x-show,而非数字索引(避免冗余逻辑);⚠️ 注意事项:
通过这种结构化思路,你不仅能解决图片过渡问题,更能深入理解 Alpine.js 响应式指令的设计哲学:状态驱动视图,指令各司其职。