我有一个多级菜单:菜单行+某些项目可能有一个下拉列表。 菜单行中的项目由“|”分隔显然最后一项不应该有边框
问题是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结构可能也不理想......所以也许一些不同的结构会自动解决问题。
提前感谢! :)
答案 0 :(得分:0)
将:last-child
条件赋予div元素。因为你的最后一个锚位于最后一个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;
}
&#13;
<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>
&#13;