第一个项目之前和最后一个项目之后没有边框间距

Rag*_*nis 14 css css-tables

我有一张假桌子.我使用border-spacing属性在它们之间创建一个空格.但这也会在第一个细胞之前和最后一个细胞之后产生间距.

我希望它只在这两列之间创建一个空格.

HTML:

<div class="table">
    <div class="cell"></div>
    <div class="cell"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.table {
    display: table;
    width: 100%;
    border-spacing: 11px 0;
    border: 1px solid #222;
}

.cell {
    display: table-cell;
    width: 50%;
    height: 20px;
    border: 1px solid #999;
    background: #ccc;
}
Run Code Online (Sandbox Code Playgroud)

JSFiddle:http://jsfiddle.net/ACH2Q/

Kim*_*m T 22

您可以使用border-spacing属性为所有表格单元格添加间距.然后使用margin-left和margin right从父项中删除外边框间距.

.container {
    max-width: 980px;
    margin: 0 auto;
    overflow: hidden;
}

.grid {
    margin-left: -20px; /* remove outer border spacing */
    margin-right: -20px; /* remove outer border spacing */
}

.row {
    display: table;
    table-layout: fixed; /* keep equal cell widths */
    width: 100%; /* need width otherwise cells aren't equal and they self collapse */
    border-spacing: 20px 0; /* best way to space cells but has outer padding */
}

.col {
    display: table-cell;
    vertical-align: top;
}
Run Code Online (Sandbox Code Playgroud)

唯一的缺点是你需要额外的嵌套div,因为表需要100%的宽度,右边距不起作用.

<div class="container">
    <div class="grid">
        <div class="row">
            <div class="col">col</div>
            <div class="col">col</div>
            <div class="col">col</div>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 或者,你可以做`min-width:100%; margin:0 -20px;`on` .row`,它应该工作得很好:) (2认同)

emb*_*oss 2

如果您查看CSS 中表格的规范,您会发现这些规范是border-spacing统一应用的,例如向table-cell元素添加边距将被忽略。

因此,除了相当肮脏的黑客之外,似乎没有干净的解决方案可以解决您使用divs with的问题(我发现这个使用“spacer divs”)。display: table

但是,如果您可以使用“真实”表来代替,那么您可以使用我认为相当可以接受的解决方案。请参阅原始版本的jsFiddle更新。

标记(我添加了一列):

<table>
    <tr>
        <td></td>
        <td></td>
        <td class="last"></td>
    </tr>         
</table>
Run Code Online (Sandbox Code Playgroud)

这个想法是让 insidetd再次diplay:inline-block对边距做出响应。然后应用 CSS 选择器规则td + td,选择除td第一个之外的所有 s。对这些元素应用 amargin-left以获得“内部间距”。最后,您必须将float:right最后一列与右表格边框相加。

table {
    width: 100%;
    border: 5px solid #222;
    border-collapse: separate;
}

td + td {
    margin-left: 8%;
}

td.last {
    float: right;
}

td {
    display: inline-block;
    width: 27%;
    height: 20px;
    border: 1px solid #999;
    background: #ccc;
}
Run Code Online (Sandbox Code Playgroud)