跳到主要内容

x-cloak

有时,当你在模板的一部分中使用 AlpineJS 时,会有一个"闪烁",即你在页面加载后、Alpine 加载前看到未初始化的模板。

x-cloak 通过隐藏其附加的元素直到 Alpine 在页面上完全加载来解决此问题。

要使 x-cloak 起作用,你必须在页面中添加以下 CSS。

[x-cloak] { display: none !important; }

以下示例将隐藏 <span> 标签,直到其 x-show 特别设置为 true,从而防止 Alpine 加载时隐藏元素出现任何"闪烁"。

<span x-cloak x-show="false">This will not 'blip' onto screen at any point</span>

x-cloak 不仅适用于被 x-showx-if 隐藏的元素:它还确保包含数据的元素在数据正确设置之前被隐藏。以下示例将隐藏 <span> 标签,直到 Alpine 将其文本内容设置为 message 属性。

<span x-cloak x-text="message"></span>

当 Alpine 在页面上加载时,它会从元素中移除所有 x-cloak 属性,从而也移除了通过 CSS 应用的 display: none;,因此显示元素。

全局语法的替代方案

如果你希望实现同样的行为,但避免包含全局样式,可以使用以下巧妙但无疑有些奇特的技巧:

<template x-if="true">
<span x-text="message"></span>
</template>

这将通过利用 x-if 的工作方式达到与 x-cloak 相同的目标。

因为 <template> 元素在浏览器中默认是"隐藏"的,在 Alpine 有机会渲染 x-if="true" 并显示它之前,你不会看到 <span>

同样,这个解决方案并不适合所有人,但值得在特殊情况下提及。