#javascript #html #alpine.js
#javascript #HTML #alpine.js
Вопрос:
я использую alpine.js для моего проекта, и у меня есть модальный, который хорошо работает с alpine.js , моя проблема в том, что всякий раз, когда вы обновляете страницу, она отображается на секунду или две (пока страница загружается), а затем исчезает. Я не хочу видеть его при загрузке. Есть ли какой-либо способ обойти это в alpine.js ?
Мой код
// Initialize data
<body x-data="{openModal: false}"
:class="openModal ? 'overflow-hidden' : 'overflow-visible'"
>
// button
<button @click="openModal = true">
Open Modal
</button>
<!-- Modal -->
<div x-show="openModal">
<!-- content -->
</div>
</body>
Ответ №1:
Вы ищете x-cloak
директиву.
Это очень просто, оно удаляется из компонента при запуске Alpine.
Итак, в вашем случае вы можете добавить следующее style
(которое скроет элементы с x-cloak
атрибутом) и добавить x-cloak
в свой Alpine.js компонент (в данном случае the body
).
<style>
[x-cloak] { display: none }
</style>
<body x-cloak x-data="{openModal: false}"
:class="openModal ? 'overflow-hidden' : 'overflow-visible'"
>
// button
<button @click="openModal = true">
Open Modal
</button>
<!-- Modal -->
<div x-show="openModal">
<!-- content -->
</div>
</body>
Комментарии:
1. Похоже, у меня это не работает. В моей голове у меня есть мой css, мой alpine.js тег сценария, а под ним я помещаю ваше предложение.
2. Nvm я понял, не заметил, что вы добавили x-cloak в body, мой плохой.
3. Да, возможно, я обновлю ответ, чтобы сделать его более понятным
Ответ №2:
x-cloak — это правильный ответ! Но на всякий случай в большем количестве случаев используйте важное правило css.
<style>
[x-cloak] {
display: none !important;
}
</style>
Комментарии:
1. это работает … спасибо
Ответ №3:
Помимо x-clock
решения, другим решением является перенос содержимого, которым вы хотите управлять, в <template>
тег с x-if="true"
параметром.
Проверьте приведенный ниже код.
<template x-if="true">
<div x-show="openModal">
<!-- content -->
</div>
</template>
Это работает, потому <template>
что элементы «скрыты» в браузерах по умолчанию, вы не увидите <div>
, пока у Alpine не будет возможности отобразить x-if="true"
и показать его, как описано в документах here