【发布时间】:2015-02-13 05:09:00
【问题描述】:
我在div .menu 中有一个ul 菜单。父 .menu 有一个顶部和底部 1px solid border。当悬停在 li 元素上时,会添加另一个边框,但父边框仍会出现在其上方。
当悬停在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-color 和border-color 不一样,我弄错了。 Codepen 链接已更新。
【问题讨论】:
-
目前您无法基于子选择器定位父级。您将不得不为此使用 js,我建议您用它标记问题
-
我只是想问一下,如果是和背景颜色一样,为什么还要设置边框呢?
-
与丹尼尔相同的问题...
-
为什么不干脆去掉顶部边框元素呢?
border-top: 1px solid black;这个。 -
这样的codepen.io/anon/pen/WbdyGg 可以工作