使用 tailwind css 定位下一个悬停的兄弟姐妹

Targetting next sibling on hover with tailwindcss

我试图隐藏一个元素,直到它的前一个兄弟元素悬停在 css 中(或者更确切地说是 scss),它看起来像这样:

.menu-container {
  // style with flex etc...
  & .menu-item-link {
    // style the link...
    &+.sub-menu-container {
      display: none;
    }
    &:hover+.sub-menu-container {
      display: block;
    }
  }
}
<ul class="menu-container">
  <li class="menu-item-container">
    <a class="menu-item-link">Ingredients</a>
    <ul class="sub-menu-container">
      <li class="sub-menu-item-container">
        <a class="sub-menu-link">Fruits</a>
      </li>
      <li class="sub-menu-item-container">
        <a class="sub-menu-link">Vegetables</a>
      </li>
      <li class="sub-menu-item-container">
        <a class="sub-menu-link">Dairy</a>
      </li>
      <li class="sub-menu-item-container">
        <a class="sub-menu-link">Children</a>
      </li>
    </ul>
  </li>
</ul>

如何使用 tailwind 实现此目的?

您实际上并不是在尝试以代码中的同级为目标,而是在尝试以 child 元素为目标。当您只想显示 sub-menu 下拉列表时,这是一个非常简单的过程。

只需将 group 添加到悬停触发器(在您的情况下为 .menu-item-link)并将 group-hover:[some-display-class] 添加到 child。这样,当悬停 parent 元素(或其本身)时,child 将更改其显示 属性。

你应该改变你的标题,我也建议你不要使用带有 class 这样名字的 Tailwind。请参阅 extracting components 以了解使用 Tailwind CSS 的推荐方式。当然,你可以随心所欲地使用它,但如果你想像那样使用 SCSS 和 classes,最好使用普通的 CSS。

您的结构示例:

<ul>
  <li class="group">
    <a>Ingredients</a>
    <ul class="hidden group-hover:block">
      <li>
        <a>Fruits</a>
      </li>
      <li>
        <a>Vegetables</a>
      </li>
      <li>
        <a>Dairy</a>
      </li>
      <li>
        <a>Children</a>
      </li>
    </ul>
  </li>
</ul>

Tailwind 播放示例 https://play.tailwindcss.com/dFc2zlmqDA