我的菜单垂直放置在页面的左侧,在<li>
之间有一个作为分隔符的:after
。我想要实现的是,当我悬停在元素本身(如果它是第一个元素)或上面和下面的元素(如果它是中间的元素),隐藏after元素,如果它是最后一个子元素,则只隐藏前一个<li>
的: after
元素。这可能听起来很困惑,但这里是我的代码:
.menu {
float: left;
color: white;
}
.menu > ul {
list-style: none;
text-align: center;
padding: 0;
margin: 0;
}
.menu > ul > li {
display: block;
position: relative;
padding: 60% 5px;
background-color: #048990;
cursor: pointer;
transition: all 0.5s;
}
.menu > ul > li:hover {
background-color: #444;
color: white;
}
.menu > ul > li:hover .menu > ul > li::after {
opacity: 0;
}
.menu > ul > li:active {
background-color: #444;
}
.menu >ul >li:after {
content: "";
background: #FFF;
position: absolute;
bottom: 0;
left: 7%;
height: 1px;
width: 86%;
}
.menu > ul > li:last-child:after {
display: none;
}
<div class="menu">
<ul>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ul>
</div>
现在我想做的就是像这样:
需要涉及IT技术相关内容,暂无更多信息。
.menu > ul > li:hover + .menu > ul > li::after
{
opacity: 0;
}
但是它没有起作用。任何帮助将不胜感激。
.menu > ul > li:hover::after
- Harry::after
,因为CSS选择器只能选择当前元素后面的子元素、后代和兄弟元素(而不是之前的元素)。不管怎样,我会发布另一种方法作为答案。 - Harry