我有一个多级菜单:菜单行 + 一些元素可能有一个下拉列表。 菜单行中的元素以“|”分隔显然最后一项不应该有边框
问题是 last-child
捕获了最后一个下拉列表中的最后一项,我需要捕获菜单行元素 (item3)。
/* 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/