【问题标题】:How to hide flashing dialog content when page is loading?页面加载时如何隐藏闪烁的对话框内容?
【发布时间】:2021-07-31 19:32:50
【问题描述】:

在 tailwindcss,Alpinejs 页面上,我使用通过单击按钮打开的模式。 问题是在页面加载时我看到闪烁的对话框内容。 我试图将隐藏类设置为模态窗口并在 init 方法的末尾 将 isPageLoaded 变量设置为 true

<div class="overflow-auto border-2 border-grey-900" x-data="app()" x-init="appInit()">

    <div class="w-full h-full">
        <button
            type="button"
            class="bg-transparent border border-gray-500 hover:border-indigo-500 text-gray-500 hover:text-indigo-500 font-bold py-2 px-4 rounded-full"
            @click="showModal = true"
        >Open modal
        </button>
    </div>
    <!--Overlay-->

    <div class="overflow-auto w-full h-full hidden" style="background-color: rgba(0,0,0,0.5)" x-show="showModal" :class="{ 'fixed inset-0 z-10 flex items-center justify-center': showModal, 'visible' : isPageLoaded }">

...
<script>

    function app() {
        return {
            showModal : false,
            isPageLoaded : false,

            appInit: function () {
                console.log('appInit::')
                this.isPageLoaded= true
            },

        }
    }

</script>

因此,我看不到闪烁的对话框内容,但无法显示我尝试设置的对话框模式:

'visible' : isPageLoaded

我的意思是切换我默认设置的隐藏类。但这不起作用。

请您检查一下笔: https://codepen.io/petrogromovo/pen/yLMNVLr

提前致谢!

【问题讨论】:

    标签: tailwind-css alpine.js


    【解决方案1】:

    使用x-cloak 隐藏元素,直到 Alpine 完全加载。 https://github.com/alpinejs/alpine#x-cloak

    x-cloak 属性添加到您要隐藏的任何元素,并将此规则添加到您的样式表中。

    [x-cloak] { display: none; }
    

    【讨论】:

    • 谢谢!看起来它有效。我是否总是将 x-cloak 与 x-data 和 x-init 放在同一个 div 中?我想在所有情况下我都必须将 html 隐藏在 x-data 和 x-init 中?
    • @PetroGromovo 你可以把它放在任何元素上。在这种特定情况下,您应该将其放在具有x-show="showModal" 的元素上,因为这是您不希望在页面加载时闪烁的元素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多