在以下代码中,我设置了ul
的底部边框。将鼠标悬停在ul
上的项目上时,我想在ul边框上准确显示底部边框或悬停项。我无法设置两个边框(ul
和ul
项目)的位置,以便它们在悬停时相互依赖。
我尝试过使用绝对位置和线高,但无法取得多大成功。
这就是我想要的:
以下是代码:
HTML:
<div class="box">
<ul>
<li><a href="#">test 1</a></li>
<li><a href="#">test 2</a></li>
</ul>
</div>
CSS:
ul{
list-style: none;
padding: 0 0 10px;
margin: 0;
border-bottom: 5px solid green;
overflow: hidden;
}
ul li{
float: left;
margin-left: 20px;
}
a{
text-decoration: none;
display: block;
}
a:hover{
border-bottom: 5px solid red;
}
答案 0 :(得分:11)
您希望定位ul
和li
- 将子项li
的底部偏移到边框的宽度,同时将其设置为transparent
然后使用li:hover
事件/选择器将broder颜色设置为红色。
使用以下CSS:
ul {
list-style: none;
margin: 0;
border-bottom: 5px solid green;
position:relative;
padding:0;
}
ul li {
padding:10px 10px;
margin-left: 20px;
display:inline-block;
position:relative;
bottom:-5px; /* <-- offset bottom of li by border width so it overlaps ul green border */
border-bottom: 5px solid transparent; /* add border, make transparent so it doesnt 'jump' on hover */
}
a {
text-decoration: none;
display: block;
}
li:hover {
border-color:red; /* <-- use the li hover event (not a hover) to color the border */
}
答案 1 :(得分:4)
你去,工作版: http://jsfiddle.net/hKVp6/
ul{
width: 100%;
float: left;
list-style: none;
margin: 0;
border-bottom: 5px solid green;
}
li{
float: left;
margin-left: 20px;
padding: 0 0 10px;
}
li:hover {
border-bottom: 5px solid red;
margin-bottom: -5px; /* same as bottom border */
}
li a{
text-decoration: none;
display: block;
}
答案 2 :(得分:3)
派对有点晚了,但这里有一个没有负值且使用positions
的解决方案。基本上我只使用background colors
:
.box{
background:green;
padding-bottom:5px;
}
ul{
list-style:none;
margin:0;
padding:0 0 0 10px;
background:white;
}
ul li{
display:inline-block;
vertical-align:top;
margin-left: 20px;
}
ul li a{
background:white;
}
li a:hover{
border-bottom:5px solid red;
}
答案 3 :(得分:1)
<强> CSS:强>
ul {
list-style: none;
padding: 0 0 0px;
margin: 0px;
border-bottom: 5px solid green;
position:absolute;
width:100%;
}
ul li {
float: left;
margin-left: 20px;
border-bottom: 5px solid transparent;
margin-bottom:-5px;
z-index:999;
}
a {
text-decoration: none;
display: block;
}
ul li:hover {
z-index:9999;
border-bottom: 5px solid red;
}
答案 4 :(得分:1)
添加5px
transparent
border
并在red
上设置hover
。试试这段代码
<div class="box">
<ul class="clearfix">
<li><a href="#">test 1</a></li>
<li><a href="#">test 2</a></li>
</ul>
</div>
.clearfix:before,
.clearfix:after{
display: table;
content: "";
line-height: 0;
}
.clearfix:after{
clear: both;
}
ul{
list-style: none;
padding: 0;
margin: 0;
border-bottom: 5px solid green;
}
ul li{
float: left;
margin-left: 20px;
padding: 0 0 10px;
border-bottom: 5px solid transparent;
margin-bottom: -5px;
}
a{
text-decoration: none;
display: block;
}
li:hover{
border-color: red;
}
选中 DEMO
答案 5 :(得分:0)
我为您的解决方案提供了解决方法。不要将边框设置为ul
,而是插入带有边框的div
- 元素。所以你不依赖于列表。
HTML:
<div class="box">
<ul>
<li><a href="#">test 1</a></li>
<li><a href="#">test 2</a></li>
</ul>
<div id="border"></div>
</div>
CSS:
.box {
width: 500px
}
#border {
width: 100%
position: absoulte;
margin-top: -15px;
border-bottom: 5px solid green;
}
ul{
list-style: none;
padding: 0 0 10px;
margin: 0;
overflow: hidden;
}
ul li{
float: left;
margin-left: 20px;
border-bottom: 5px solid green;
}
ul li:hover {
border-bottom: 5px solid red;
}
a{
text-decoration: none;
display: block;
}