我在div
.menu
内有ul
菜单。父母.menu
有顶部和底部1px solid border
。当将鼠标悬停在li
元素上时,会添加另一个边框,但父边框仍然会出现在其上方。悬停时覆盖父级边框
我想在上悬停时不显示.menu
顶部边框我不想使用js,除非它是唯一的解决方案。
这是我的代码和我的临时修复。
HTML:
<div class="menu">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Fun</a></li>
<li><a href="#">Work</a></li>
</ul>
</div>
CSS:
.menu{
width: 100%;
background-color: black;
/* I want this border to... ↓ */
border-top: 1px solid black;
border-bottom: 1px solid black;
box-sizing: border-box;
}
.menu ul{
list-style: none;
overflow: hidden;
margin: 0px;
height:35px;
}
.menu ul li{
display: block;
float:left;
border-left: 1px solid gray;
position: relative;
}
.menu ul a{
color: #FFF;
padding: 10px;
display: block;
}
.menu ul a:hover{
text-decoration: none;
background-color: white;
color: pink;
/* ...not be displayed above this border when hovering */
border-top: 3px solid pink;
}
我只找到这个低效的解决方案:
.menu ul:hover{
position: relative;
top: -1px;
}
Codepen链接:http://codepen.io/eldev/pen/YPYLQz?editors=110
有什么想法?
修改:
backgound颜色是不一样的边框颜色我错误地做到了。更新了Codepen链接。
当前,您不能根据子选择器来定位父项。你将不得不使用js这个,我建议你用它标记问题 – Huangism 2015-02-11 16:29:02
我只想问你为什么设置一个边框,如果它是背景相同的颜色? – DaniP 2015-02-11 16:29:15
与Daniel相同的问题... – 2015-02-11 16:29:57