欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

如何檢查元素是否被點(diǎn)擊來(lái)使用順風(fēng)制作動(dòng)畫(huà)

我試圖使用Tailwind創(chuàng)建一個(gè)用戶(hù)菜單,但是我不確定如何檢查用戶(hù)是否被點(diǎn)擊來(lái)顯示動(dòng)畫(huà)。

我可以用一個(gè)鉤子讓它出現(xiàn)和消失,等等。但是如果我使用鉤子,我就不能讓用戶(hù)菜單從右邊滑進(jìn)來(lái),就像我正在嘗試的那樣。

以下是我所知道的:

<div className="relative">
  <Image
    className="rounded-full cursor-pointer peer"
    src={currentUser?.user.image}
    alt="user avatar"
    width="35"
    height="35"
    onClick={() => menu.onToggle()}
  />
  =<UserMenu />
</div>

和用戶(hù)菜單:

<div
  className="absolute bg-black top-[59px] left-[100px] rounded-bottom-md transform    duration-200 peer-hover:-translate-x-[200px]"
>
  {userMenuItems.map((item) => (
    <div className="py-4 px-8 flex flex-row items-center justify-start text-zinc-400">
      {item.label}
    </div>
  ))}
</div>

使用peer hover也很有意思,有沒(méi)有人也知道如何讓用戶(hù)菜單出現(xiàn)在hover上卻又停留下來(lái)?

我找到了一個(gè)解決這個(gè)問(wèn)題的方法,它對(duì)我很有效,但是有點(diǎn)粗糙。請(qǐng)注意,我的解決方案是針對(duì)懸停的,而針對(duì)單擊的解決方案是類(lèi)似的,唯一的區(qū)別是使用onClick prop而不是onMouseEnter。

懸停時(shí)顯示動(dòng)畫(huà),不消失。 您可以做的是讓一個(gè)狀態(tài)懸停,并使用onMouseEnter屬性來(lái)指示對(duì)等體是否懸停,并在UserMenu組件中,使用該狀態(tài)通過(guò)模板文字有條件地應(yīng)用tailwind類(lèi)。

這將保留動(dòng)畫(huà),并應(yīng)用懸停功能。

const [hovered, setHovered] = useState(false);

//...

<div className="relative">
  <Image
    className="rounded-full cursor-pointer peer"
    src={currentUser?.user.image}
    alt="user avatar"
    width="35"
    height="35"
    onClick={() => menu.onToggle()}
    onMouseEnter={() => setHovered(true)}   // hovered? set the state to true.
  />
  <UserMenu hovered={hovered} />
</div>

<div
  className={`absolute top-[59px] left-[100px] rounded-bottom-md transform    duration-200 ${hovered ? "bg-black -translate-x-[200px]" : "bg-transparent"}`}
>
  {userMenuItems.map((item) => (
    <div className={`py-4 px-8 flex flex-row items-center justify-start ${hovered ? "text-zinc-400" : "text-transparent"}`}>
      {item.label}
    </div>
  ))}
</div>

包括取消懸停時(shí)消失。 同樣常見(jiàn)的是,當(dāng)菜單顯示時(shí),用戶(hù)懸停菜單,當(dāng)你不再懸停實(shí)際菜單時(shí),它就會(huì)消失(對(duì)等是不相關(guān)的)。為此,如果您愿意,可以使用onMouseLeave屬性使菜單消失。

這方面的代碼如下所示:

const [hovered, setHovered] = useState(false);

//...

<div className="relative">
  <Image
    className="rounded-full cursor-pointer peer"
    src={currentUser?.user.image}
    alt="user avatar"
    width="35"
    height="35"
    onClick={() => menu.onToggle()}
    onMouseEnter={() => setHovered(true)}   // hovered? set the state to true.
  />
  <UserMenu hovered={hovered} onLeave={() => setHovered(false)} />
</div>

<div
  className={`absolute top-[59px] left-[100px] rounded-bottom-md transform    duration-200 ${hovered ? "bg-black -translate-x-[200px]" : "bg-transparent"}`}
>
  {userMenuItems.map((item) => (
    <div className={`py-4 px-8 flex flex-row items-center justify-start ${hovered ? "text-zinc-400" : "text-transparent"}`}
      onMouseLeave={onLeave}
    >
      {item.label}
    </div>
  ))}
</div>