【发布时间】:2021-09-16 20:34:10
【问题描述】:
在 Laravel 8 / Alpinejs 2.8 应用程序中,我有类似的切换菜单
<!--Toggle button (hidden on large screens)-->
<button
@click="isOpen = !isOpen"
type="button"
class="block lg:hidden px-2 text-gray-500 hover:text-white focus:outline-none focus:text-white"
:class="{ 'transition transform-180': isOpen }"
>
<svg
class="h-6 w-6 fill-current"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
>
<path
x-show="isOpen"
fill-rule="evenodd"
clip-rule="evenodd"
d="M18.278 16.864a1 1 0 0 1-1.414 1.414l-4.829-4.828-4.828 4.828a1 1 0 0 1-1.414-1.414l4.828-4.829-4.828-4.828a1 1 0 0 1 1.414-1.414l4.829 4.828 4.828-4.828a1 1 0 1 1 1.414 1.414l-4.828 4.829 4.828 4.828z"
/>
<path
x-show="!isOpen"
fill-rule="evenodd"
d="M4 5h16a1 1 0 0 1 0 2H4a1 1 0 1 1 0-2zm0 6h16a1 1 0 0 1 0 2H4a1 1 0 0 1 0-2zm0 6h16a1 1 0 0 1 0 2H4a1 1 0 0 1 0-2z"
/>
</svg>
</button>
<!--Menu-->
<div
class="w-full flex-grow lg:flex lg:items-center lg:w-auto"
:class="{ 'block shadow-3xl': isOpen, 'hidden': !isOpen }"
@click.away="isOpen = false"
x-show.transition="true"
>
<ul
class="pt-6 lg:pt-0 list-reset lg:flex justify-end flex-1 items-center"
>
<li class="mr-3">
它工作正常。 升级到 Alpinejs 3.2 修改
@click.away="isOpen = false"
使用@click.away="isOpen = false" 与
@click.outside="isOpen = false"
和
x-show.transition="true"
进入
x-show="true"
x-transition
但之后下拉菜单根本不可见。
为什么会这样以及如何解决?
修改 #1:
-
如果要更改菜单的 x-show="isOpen" 则可以,在小型设备上菜单按预期工作,但是 在大型设备上根本不可见
-
我需要在大型设备上以某种方式将 init 值设置为 true。条件:
x-show="isOpen" md:x-show="true" x-transition
没用
-
我想我可以根据当前设备使用包https://github.com/jenssegers/agent 来获取这个值。 有更好的决定吗?
-
您能否解释一下 devtools 在此调试中的作用?
谢谢!
【问题讨论】:
标签: alpine.js