我有一个水平显示的项目列表。我想在每个li周围创建一个边框,让它们紧挨着彼此。
我创建了一个小测试来说明问题,seen here:
<ul class="dashboard_inline_links">
<li><a href="#">October - 0</a></li>
<li><a href="#">November - 0</a></li>
<li><a href="#">December - 765</a></li>
<li><a href="#">January - 0</a></li>
<li><a href="#">February - 756</a></li>
<li><a href="#">March - 2</a></li>
</ul>
.dashboard_inline_links li {
border-style: solid;
border-width: 1px;
display: inline;
padding: 4px 8px;
}
.dashboard_inline_links a {
border-color: transparent #C6D3F0;
border-style: solid;
border-width: 1px;
color: #28478E;
display: inline-block;
margin: 0;
padding: 0;
}
简而言之 - 列表项之间有空格。我希望他们彼此相邻,现在我只能通过在li项目上设置margin-left = -3px来实现这一点。
知道发生了什么事吗?我觉得我错过了一些明显的东西!
答案 0 :(得分:5)
据我所知,您将li
设置为display: inline
,这意味着它将被视为段落中的文字。因此,元素之间的white-space
成为您可视的空间。
这应该表明我的意思:http://jsfiddle.net/8F2XY/1/
注意,以下“解决”问题:
<ul class="dashboard_inline_links">
<li><a href="#">October - 0</a></li><li><a href="#">November - 0</a></li><li><a href="#">December - 765</a></li><li><a href="#">January - 0</a></li><li><a href="#">February - 756</a></li><li><a href="#">March - 2</a></li>
</ul>
li
s之间以及li
和a
之间没有空格来修复代码原样。
现在,如果您float: left
,该元素将变为display: block
元素,它将在显示中向左流动。空白将被忽略。
所以:
.dashboard_inline_links {
border-bottom: 1px dotted #C6D3F0;
border-top: 1px dotted #C6D3F0;
display: inline-block; overflow: hidden;
padding: 6px 0;
width: 916px;
margin-top: -5px;
padding: 6px 0;
position: relative;
white-space: nowrap;
}
.dashboard_inline_links li {
list-style-type: none;
border-style: solid;
border-width: 1px;
float: left;
padding: 4px 8px;
}
.dashboard_inline_links a {
border-color: transparent #C6D3F0;
border-style: solid;
border-width: 1px;
color: #28478E;
display: block;
margin: 0;
padding: 0;
}
答案 1 :(得分:1)
而不是在display:inline;
float:left;
使用.dashboard_inline_links li
.dashboard_inline_links li {
border-style: solid;
border-width: 1px;
padding: 4px 8px;
float:left;
}
答案 2 :(得分:1)
答案 3 :(得分:1)
问题是浏览器会将换行符解释为空格。
我还没找到一个CSS解决方法,但是一个非常正确的评论指出你应该完全删除这个空格:
<ul class="dashboard_inline_links">
<li><a href="#">October - 0</a></li><li>
<a href="#">November - 0</a></li><li>
<a href="#">December - 765</a></li><li>
<a href="#">January - 0</a></li><li>
<a href="#">February - 756</a></li><li>
<a href="#">March - 2</a></li>
</ul>
这将在您当前的CSS设置中正常运行。我仍然试图找到一种CSS方式。
答案 4 :(得分:1)
inline-block有一个在元素之间放置空格的坏习惯。顺便说一句,这很自然。这是由<li>
s
你可以做些什么来解决这个问题:
<li>
一个接一个地放在单个文件中。意思是,不留空格,制表符或新行:就像这样
//notice after the </li>, you follow another after it. no spaces!
<ul>
<li>item</li><li>item</li><li>item</li>
<ul>
<li>
之前和之后开始和结束评论。这样做:
//notice after the </li>, you follow another after it. no spaces!
<ul>
<li>item</li><!--
--><li>item</li><!--
--><li>item</li>
<ul>
我更喜欢第二个。虽然凌乱,我可以看到列表的结构。