2012-03-14 106 views
0

当我将无序列表格式化为内嵌块时,如果其他元素具有任何块内容,则列表中的最后一个列表元素似乎具有额外的顶部边距。看看这个HTML:列表元素的CSS格式具有不正确的边距

<div id="report_builder"> 
    <ul id="report_layout_1" class="report_layout ui-droppable"> 
     <li rel="recid">Id 
      <div><input type="text" class="report-column-value"></div> 
     </li> 
     <li rel="street1">Address 
      <div><input type="text" class="report-column-value"></div> 
     </li> 
     <li> 
      Last Field 
     </li> 
    </ul> 
</div>​ 

这里是CSS:

#report_builder li { 
    font-size: 8pt; 
} 

#report_builder > ul { 
    float: left; 
} 

.report_layout { 
    height: 150px; 
} 
.report_layout > li { 
    display: inline-block; 
    padding: 5px; 
    margin-left: 2px; 
    border: 1px solid #ccc; 
    border-top: 10px solid #ccc; 
    height: 100px; 
    background-color:#fff; 
} 
.report_layout > li:last { 
    cursor: default; 
} 
.report_layout > li a { 
    cursor: pointer; 
} 
.report_layout > li:nth-child(even) { 
    background-color:#eee; 
} 

#report_builder input.report-column-value { 
    width: 95px; 
} 

为什么这最后一个列表元素下拉?这是一个fiddle来演示我在做什么。

回答

2

很是怪异,但你应该强迫你的列表项对齐到使用vertical-align: top;顶部。见working version on jsfiddle

这是因为inline-block元素将对齐为inline,即,兄弟姐妹将使用基线作为对齐参考。

+0

这是正确的答案。将'vertical-align:top;'添加到'.report_layout> li' – 2012-03-14 19:27:17

+0

这就是我错过的!非常感谢。 – davidethell 2012-03-14 19:32:37

1

带有内嵌块设置的元素呈现,右边有4个像素边距。

请参阅this

这是一个与<li>元素之间的空白问题。如果您删除了空白区域,问题将得到解决。

+0

我很抱歉 - 我在看你的小提琴之前回答了这个问题。 – Dov 2012-03-14 18:44:05