我有一个ul
包裹在.box
中。我为.box
设置了底部边框。 ul
项也有底部边框,我希望li
边框放在.box
边框上,以便.box
边框不再可见。我试图通过设置margin-bottom: -1px
但不起作用来做到这一点。
请参阅附图:
以下是我正在尝试的内容:
HTML:
<div class="box">
<ul>
<li>Hello</li>
<li>World</li>
</ul>
</div>
CSS:
.box{
border-bottom: 1px solid blue;
overflow: hidden;
}
ul{
list-style: none;
margin: 0;
padding: 0;
}
ul li{
float: left;
background: green;
border: 1px solid red;
}
答案 0 :(得分:1)
<强>问题强>
您基本上希望li
溢出其.box
父级,但.box
设置为overflow:hidden;
。
<强>解决方案强>
可能的解决方案是首先使用li
设置position:relative;
,然后使用bottom:-1px;
使其溢出。然后从overflow:hidden;
容器中删除.box
,找到克服明确错误的替代方法。
例如:
.box {
display:table; /* overcome the clear bug */
width:100%;
border-bottom: 1px solid blue;
}
ul {
list-style: none;
margin: 0;
padding: 0;
}
ul li {
position:relative;
bottom:-1px;
float: left;
background: green;
border: 1px solid red;
}
答案 1 :(得分:1)
您是否考虑过更改HTML结构?对你来说,使用你现在的HTMl做的事情似乎有点“不自然”。无论如何,这是另一种解决方案。它要求您为列表项设置高度。
你可以这样做:
<强> HTML 强>
<div class="box">
<ul>
<li class="left">Hello</li>
<li class="left">World</li>
<li class="add-bottom-border">something</li>
</ul>
</div>
<强> CSS 强>
.box{
display:table; /* overcome the clear bug */
width:100%;
}
ul{
list-style: none;
margin: 0;
padding: 0;
}
ul li{
height:20px;
background: green;
border: 1px solid red;
}
.add-bottom-border {
overflow:auto;
border-bottom: 1px solid blue;
}
.left {
float:left;
}
对溢出背后的原因进行了解释:auto; here。