html - CSS:选择指定深度的最后一个元素(两级菜单栏)

标签 html css drop-down-menu css-selectors

我有一个多级菜单:菜单行 + 一些元素可能有一个下拉列表。 菜单行中的元素以“|”分隔显然最后一项不应该有边框

问题是 last-child 捕获了最后一个下拉列表中的最后一项,我需要捕获菜单行元素 (item3)。

result

/* MENU */

div.menu {
  display: inline;
}
div.menu a {
  padding-left: 0.5em;
  padding-right: 0.5em;
  border-right: 1px solid lightgrey;
  font-size: 12pt;
}
div.menu a:last-child {
  border-right: 0px;
}
/*DROP DOWN*/

.dropdown {
  position: relative;
  display: inline;
}
.dropdown_content {
  display: none;
  z-index: 1;
  position: absolute;
  top: 1em;
  right: 0;
  background-color: #f9f9f9;
  white-space: nowrap;
  border-bottom: 1px solid lightgrey;
}
.dropdown_content a {
  padding: 0.2em;
  text-decoration: none;
  display: block;
}
.dropdown:hover .dropdown_content {
  display: block;
}
<div class="menu">
  <a href="">Item1</a>
  <a href="">Item2</a>
  <div class="dropdown">
    <a class="dropbtn">Item3</a>
    <div class="dropdown_content">
      <a href="">Subitem1</a>
      <a href="">Subitem2</a>
    </div>
  </div>
</div>

我需要纯 CSS 解决方案,请勿使用 JS
它应该适用于 IE11
我怀疑菜单 html 结构可能也不理想......所以也许一些不同的结构会自动解决问题。

提前致谢! :)

最佳答案

给 div 元素 :last-child 条件。因为你的最后一个 anchor 在最后一个 div 之下。其中 > 表示直接子级。

/* MENU */

div.menu {
  display: inline;
}
div.menu a {
  padding-left: 0.5em;
  padding-right: 0.5em;
  border-right: 1px solid lightgrey;
  font-size: 12pt;
}
div.menu > div:last-child > a {
  border-right: 0px;
}
/*DROP DOWN*/

.dropdown {
  position: relative;
  display: inline;
}
.dropdown_content {
  display: none;
  z-index: 1;
  position: absolute;
  top: 1em;
  right: 0;
  background-color: #f9f9f9;
  white-space: nowrap;
  border-bottom: 1px solid lightgrey;
}
.dropdown_content a {
  padding: 0.2em;
  text-decoration: none;
  display: block;
}
.dropdown:hover .dropdown_content {
  display: block;
}
<div class="menu">
  <a href="">Item1</a>
  <a href="">Item2</a>
  <div class="dropdown">
    <a class="dropbtn">Item3</a>
    <div class="dropdown_content">
      <a href="">Subitem1</a>
      <a href="">Subitem2</a>
    </div>
  </div>
</div>

关于html - CSS:选择指定深度的最后一个元素(两级菜单栏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40696858/

相关文章:

javascript - 显示 JavaScript 变量数组

javascript - 使用 PrototypeJS 1.6 访问 anchor 上的 HTML 数据属性

HTML:如何使水平导航栏具有下拉菜单?

jquery - "Mega"下拉菜单

javascript - 自定义下拉菜单未按预期工作

javascript - HTML 表单值不会推送到 JavaScript 数组

html - 当我尝试使用 CSS 时我的页面出现错误

带有 CSS 的 JavaFX TextArea 样式

javascript - Megamenu 的中心下拉菜单

c# - 动态下拉列表 ASP.net