【问题标题】:Target the ul following the active ul in a menubar定位菜单栏中活动 ul 之后的 ul
【发布时间】:2013-10-04 10:31:31
【问题描述】:

我正在整理一个 WP 网站,在菜单栏上,活动菜单项带有下划线。所有菜单项 (li) 都设置了 padding-right,但我需要将其从活动元素中移除,以便底部的边框仅延伸到文本的末尾。为了弥补它,我需要以某种方式瞄准下一个 li 但我不太清楚该怎么做。我在别人的 WP 主题的背景下工作,这总是一个挑战,但我认为这可能是可行的,我只是不知道如何组合 CSS 选择器。这是基本的菜单结构:

<nav id="top-menu">
  <ul id="menu-top">
    <li id="menu-item">
      <a>ITEM 1</a>
    </li>
    <li id="menu-item current-menu-item">
      <a>ITEM 2</a>
    </li>
    <li id="menu-item">
      <a>ITEM 3</a>
    </li>
  </ul>
</nav>

要定位元素上的填充,我必须使用 #top-menu ul > li#current-menu-item > a

如果我想在这个例子中定位第三个元素,我会使用什么代码?这甚至可能吗,还是我试图过于具体?我希望有一些子选择器和后代选择器的组合,但我不确定如何让它们一起工作。感谢您的帮助!

【问题讨论】:

    标签: html css wordpress navigation css-selectors


    【解决方案1】:

    通常在这种情况下,我会使用一些 jQuery。使用 jQuery,您可以使用 next() 来获取您所定位的 li 之后的 li。

    首先,您混淆了 id 和类。您需要在这里使用类(ID 不能重复):

    <nav id="top-menu">
      <ul id="menu-top">
        <li class="menu-item">
          <a>ITEM 1</a>
        </li>
        <li class="menu-item current-menu-item">
          <a>ITEM 2</a>
        </li>
        <li class="menu-item">
          <a>ITEM 3</a>
        </li>
      </ul>
    </nav>
    

    那么这会给你当前一个之后的 li:

    $('.current-menu-item').next()
    

    所以你可以做一些事情,比如向它添加另一个类(显然我的类名比它真正需要的长得多!):

    $('.current-menu-item').next().addClass('the-one-after-the-current-menu-item');
    

    然后您可以通过 css 设置样式。

    .the-one-after-the-current-menu-item { // styling here.... }
    

    【讨论】:

    • 哦,是的,我只是想记住一些类似于我正在编辑的主题使用的 id/class 结构的东西。我只是想告诉你我在做什么。我想我可能可以使用这个解决方案,我不明白为什么它不起作用。我明天试试!谢谢:)
    【解决方案2】:

    是的,CSS 中的“+”选择后面的元素。在这种情况下,是这样的:

    #current-menu-item + li {
        background: red;
    }
    

    不过,您可能还有另一个问题,即您不能在 ID 中使用空格。如果您的示例中的 ID 是类,那您就完全没问题了。

    【讨论】:

  • 一定会的!如果你愿意,你甚至可以做#current-menu-item + li a(不带>)
  • 【解决方案3】:

    正如 russtuck91 所指出的,current-menu-item 需要是一个类,那么他的答案就是我要实现的那个,它是最干净的。

    但是,如果你不能改变它(你必须这样做,因为你不能在 id 中有空格),你可以使用 :nth-child(x) 其中 x 是向下的子元素数:

    #top-menu li:nth-child(3) a {
        color:red;
    }
    

    仍然会推荐 russtuck91 的答案

    【讨论】:

    • 哦,是的,它因页面而异,哪个页面具有活动类,所以很遗憾,我不能使用这样的设定数字。谢谢!
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签