2012-10-18 132 views
12

我试图在网格系统中使用表格单元格,利用行上的负边距来消除嵌套网格元素上的左侧和右侧排水沟。这适用于浮动和inline-block的元素很好,但与display: table元素,同时尊重负左边距,忽略负面右页边距:不能在表格元素上使用负右边距?

Table with negative right margin

奇怪,不是吗?一个简单的演示:http://jsfiddle.net/57FAN/1/

不幸的是,所有浏览器似乎都以相同的方式实现。有任何想法吗?

P.S.让我们推迟讨论table-*元素的布局,直到flex框标准化。

+0

没有理由推迟了表格排版的争论就像是没有理由使用表格布局。 – Kyle

+3

@KyleSevenoaks OP不使用表格,他使用表格显示属性。规则是不使用表格标签进行布局,因为它用于表示表格数据,而不是让非表格元素看起来像表格。 – cimmanon

+0

噢,我没听清楚。当然使用display:table;财产完全合法(不是讽刺)。谢谢你清理那个。 – Kyle

回答

6

表格不会忽略负边距,但宽度仅为100%,向左移5px。你需要一个“100%+ 2 * 5px”来完全填充灰色区域。

该行没有宽度,因此使用可用的整个宽度。

如果你会使用

.row { 
    margin: 0 -5px; 
    width: 100%; 
} 

你会看到宽度相等

+0

啊,你是对的。我没有考虑宽度:在块级元素上的auto不总是与width:100%相同。 –

0

您的代码有更多marginpadding属性的。所以它看起来像那样。这里我更正了一些代码。

Fiddle DEMO

+0

谢谢Selva,但边距和填充是网格系统的一部分,无法删除。 –