You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Tailwind CSS hover触发的子菜单改为点击事件触发?

点击触发子菜单的实现方案

完全可以实现,以下分别提供仅用Tailwind CSS和配合JavaScript的两种实现方案:

方案1:仅使用Tailwind CSS实现

无需编写JavaScript,利用原生checkbox的选中状态配合Tailwind的peer关联类即可实现切换效果,代码如下:

<div>
  <!-- 隐藏的单选框作为状态存储 -->
  <input type="checkbox" id="admission-toggle" class="peer hidden">
  <!-- 点击触发的文字用label关联单选框 -->
  <label for="admission-toggle" class="font-bold text-gray-700 cursor-pointer">Admission</label>
  <!-- 子菜单用peer-checked状态控制显示 -->
  <div class="hidden peer-checked:block bg-white w-auto">
    <div class="p-3 hover:bg-gray-200">
      Admission Process
    </div>
    <div class="p-3 hover:bg-gray-200">
      option 1
    </div>
    <div class="p-3 hover:bg-gray-200">
      option 2
    </div>
  </div>
</div>

该方案优势是代码精简无额外JS,劣势是仅支持点击触发按钮切换状态,若需要点击页面空白处关闭菜单等进阶交互,还是需要配合JS实现。

方案2:配合少量JavaScript实现(生产环境更推荐)

灵活度更高,可以实现点击空白关闭、同时仅展开一个菜单等进阶交互,代码如下:

HTML 改造

<div class="dropdown-wrapper">
  <span class="font-bold text-gray-700 cursor-pointer" data-dropdown-trigger>Admission</span>
  <div class="hidden bg-white w-auto" data-dropdown-content>
    <div class="p-3 hover:bg-gray-200">
      Admission Process
    </div>
    <div class="p-3 hover:bg-gray-200">
      option 1
    </div>
    <div class="p-3 hover:bg-gray-200">
      option 2
    </div>
  </div>
</div>

JavaScript 逻辑

// 绑定触发按钮点击事件
document.querySelectorAll('[data-dropdown-trigger]').forEach(trigger => {
  trigger.addEventListener('click', e => {
    e.stopPropagation();
    // 切换对应子菜单的显示状态
    trigger.nextElementSibling.classList.toggle('hidden');
  });
});
// 点击页面其他位置关闭所有已展开的菜单
document.addEventListener('click', () => {
  document.querySelectorAll('[data-dropdown-content]').forEach(content => {
    content.classList.add('hidden');
  });
});

内容的提问来源于stack exchange,提问作者Fayakon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:06:09