【发布时间】:2011-12-02 16:20:58
【问题描述】:
我决定了一个垂直下拉列表想要的效果。基本上,每个列表元素都由一个 1px 的灰色条分隔。这个效果很简单,应用bottom-border:solid 1px black;
悬停时,我希望所选项目的顶部和底部边框变为白色。不幸的是,在列表项元素上设置顶部和底部边框不会更改其上方列表项的底部边框,最终顶部边框保持黑色,底部边框变为白色。
有没有一种css唯一的方法来实现这个效果?
这里显示了想要的效果:
【问题讨论】:
我决定了一个垂直下拉列表想要的效果。基本上,每个列表元素都由一个 1px 的灰色条分隔。这个效果很简单,应用bottom-border:solid 1px black;
悬停时,我希望所选项目的顶部和底部边框变为白色。不幸的是,在列表项元素上设置顶部和底部边框不会更改其上方列表项的底部边框,最终顶部边框保持黑色,底部边框变为白色。
有没有一种css唯一的方法来实现这个效果?
这里显示了想要的效果:
【问题讨论】:
这将是nonexistent previous-sibling selector 的完美使用。不幸的是,它根本不存在,我会采取不同的方法。如果您可以将边框更改为在 top 上,则下一个兄弟选择器将完美运行:
ul > li:hover, ul > li:hover + li {
border-top: 1px solid white;
}
【讨论】:
显然是在看一个 CSS 选择器到元素之前的兄弟姐妹,只针对以下,看这个例子:
<html>
<head>
<title></title>
</head>
<style type="text/css">
ul {
list-style: none;
width: 50%;
margin: 50px auto;
}
li {
background: #ccc;
border-bottom: 1px solid #000;
height; 20px;
}
li:hover + li, li:hover {
border-bottom: 1px solid #FFF;
}
</style>
<body>
<ul>
<li> </li>
<li> </li>
<li> </li>
<li> </li>
<li> </li>
</ul>
<p></p>
</body>
</html>
所以只有css很难
【讨论】: