alpinejs @mouseover 无法正常工作
alpinejs @mouseover not working correctly
我想通过悬停触发下拉菜单,所以使用@mouseover。但是当光标位于文本和 V 形之间时,下拉列表变为隐藏。我将 mouseover 与标签一起使用,所以它应该包含文本和 V 形,不是吗?
这是我的代码
<header class="relative z-50" x-data="{ dropdown: '' }">
<nav class="overflow-hidden z-50">
<div class="container space-x-14 py-7 desktop:justify-start flex items-center z-50">
<nav class="space-x-14">
<a @mouseover="dropdown = dropdown === 'open' ? '' : 'open'" class="cursor-pointer font-semibold">
<span class="border-b-2 pb-2 transition duration-300" :class="dropdown === 'open' ? 'border-seaweed' : 'border-transparent'">{{ __('test1') }}</span> <span class="inline-block bg-caret-down bg-center bg-no-repeat w-4 h-2"></span>
</a>
问题是什么?
为了解决这个问题,我们需要将两个 <span>
元素嵌入到一个 <div>
中,我们在其中添加 pointer-events-none
class(假设您使用的是 TailwindCSS)禁用子元素的指针事件。此外,我们还添加了 @mouseleave
事件来更改打开状态。
<a @mouseover="dropdown = 'open'"
@mouseleave="dropdown = ''"
class="cursor-pointer font-semibold">
<div class="pointer-events-none">
<span class="border-b-2 pb-2 transition duration-300" :class="dropdown === 'open' ? 'border-seaweed' : 'border-transparent'">{{ __('test1') }}</span>
<span class="inline-block bg-caret-down bg-center bg-no-repeat w-4 h-2"></span>
<div>
</a>
我想通过悬停触发下拉菜单,所以使用@mouseover。但是当光标位于文本和 V 形之间时,下拉列表变为隐藏。我将 mouseover 与标签一起使用,所以它应该包含文本和 V 形,不是吗?
这是我的代码
<header class="relative z-50" x-data="{ dropdown: '' }">
<nav class="overflow-hidden z-50">
<div class="container space-x-14 py-7 desktop:justify-start flex items-center z-50">
<nav class="space-x-14">
<a @mouseover="dropdown = dropdown === 'open' ? '' : 'open'" class="cursor-pointer font-semibold">
<span class="border-b-2 pb-2 transition duration-300" :class="dropdown === 'open' ? 'border-seaweed' : 'border-transparent'">{{ __('test1') }}</span> <span class="inline-block bg-caret-down bg-center bg-no-repeat w-4 h-2"></span>
</a>
问题是什么?
为了解决这个问题,我们需要将两个 <span>
元素嵌入到一个 <div>
中,我们在其中添加 pointer-events-none
class(假设您使用的是 TailwindCSS)禁用子元素的指针事件。此外,我们还添加了 @mouseleave
事件来更改打开状态。
<a @mouseover="dropdown = 'open'"
@mouseleave="dropdown = ''"
class="cursor-pointer font-semibold">
<div class="pointer-events-none">
<span class="border-b-2 pb-2 transition duration-300" :class="dropdown === 'open' ? 'border-seaweed' : 'border-transparent'">{{ __('test1') }}</span>
<span class="inline-block bg-caret-down bg-center bg-no-repeat w-4 h-2"></span>
<div>
</a>