通过CSS可以做到吗?
我尝试着
tr.classname {
border-spacing: 5em;
}
无济于事。也许我做错了什么?
border-spacing
是关系到一个属性table
,而不是tr
。尝试table.classname {border-spacing:5em}
。 Note
注意:如果指定!DOCTYPE,则IE8支持border-spacing属性。
通过CSS可以做到吗?
我尝试着
tr.classname {
border-spacing: 5em;
}
无济于事。也许我做错了什么?
border-spacing
是关系到一个属性table
,而不是tr
。尝试table.classname {border-spacing:5em}
。 Note
注意:如果指定!DOCTYPE,则IE8支持border-spacing属性。
Answers:
您需要在td
元素上使用填充。这样的事情应该可以解决问题。当然,您可以使用顶部填充而不是底部填充来获得相同的结果。
在下面的CSS代码中,大于号表示填充仅应用于将td
子tr
级直接指向class元素的元素spaceUnder
。这将使使用嵌套表成为可能。(示例代码中的单元格C和D。)我不太确定浏览器是否支持直接子选择器(例如IE 6),但它不应破坏任何现代浏览器中的代码。
/* Apply padding to td elements that are direct children of the tr elements with class spaceUnder. */
tr.spaceUnder>td {
padding-bottom: 1em;
}
<table>
<tbody>
<tr>
<td>A</td>
<td>B</td>
</tr>
<tr class="spaceUnder">
<td>C</td>
<td>D</td>
</tr>
<tr>
<td>E</td>
<td>F</td>
</tr>
</tbody>
</table>
这应该如下所示:
+---+---+
| A | B |
+---+---+
| C | D |
| | |
+---+---+
| E | F |
+---+---+
bottom-border
组透明也可能正常工作,但我不知道它是如何跨浏览器兼容。
在父表中,尝试设置
border-collapse:separate;
border-spacing:5em;
加上边框声明,然后看是否达到您想要的效果。但是请注意,IE不支持“分隔边框”模型。
thead
和tbody
,它将border-spacing
在Chrome 中将两者之间加倍(而在Firefox中则为1)。
border-spacing: 0 1em
用于获取仅行之间的间距。
由于我在桌子后面有一个背景图片,所以用白色填充物伪造它是行不通的。我选择在内容的每一行之间放置一个空行:
<tr class="spacer"><td></td></tr>
然后使用CSS为间隔行赋予一定的高度和透明的背景。
border-spacing CSS属性指定相邻单元格的边框之间的距离(仅适用于分隔的边框模型)。这等效于表示性HTML中的cellspacing属性,但是可选的第二个值可用于设置不同的水平和垂直间距。
最后一部分经常被监督。例:
.your-table {
border-collapse: separate; /* allow spacing between cell borders */
border-spacing: 0 5px; /* NOTE: syntax is <horizontal value> <vertical value> */
更新
我现在知道,OP希望特定的单独行具有增加的间距。我添加了一个带有tbody
元素的设置,该设置可以在不破坏语义的情况下完成该任务。但是,我不确定所有浏览器是否都支持它。我是用Chrome浏览器制作的。
下面的示例用于显示如何使它看起来像表中存在单独的行,完全散发出CSS的甜味。还为第一行提供了更大的间距tbody
。随时使用!
支持通知:IE8 +,Chrome,Firefox,Safari,Opera 4+
.spacing-table {
font-family: 'Helvetica', 'Arial', sans-serif;
font-size: 15px;
border-collapse: separate;
table-layout: fixed;
width: 80%;
border-spacing: 0 5px; /* this is the ultimate fix */
}
.spacing-table th {
text-align: left;
padding: 5px 15px;
}
.spacing-table td {
border-width: 3px 0;
width: 50%;
border-color: darkred;
border-style: solid;
background-color: red;
color: white;
padding: 5px 15px;
}
.spacing-table td:first-child {
border-left-width: 3px;
border-radius: 5px 0 0 5px;
}
.spacing-table td:last-child {
border-right-width: 3px;
border-radius: 0 5px 5px 0;
}
.spacing-table thead {
display: table;
table-layout: fixed;
width: 100%;
}
.spacing-table tbody {
display: table;
table-layout: fixed;
width: 100%;
border-spacing: 0 10px;
}
<table class="spacing-table">
<thead>
<tr>
<th>Lead singer</th>
<th>Band</th>
</tr>
</thead>
<tbody>
<tr>
<td>Bono</td>
<td>U2</td>
</tr>
</tbody>
<tbody>
<tr>
<td>Chris Martin</td>
<td>Coldplay</td>
</tr>
<tr>
<td>Mick Jagger</td>
<td>Rolling Stones</td>
</tr>
<tr>
<td>John Lennon</td>
<td>The Beatles</td>
</tr>
</tbody>
</table>
您无法更改表格单元格的边距。但是您可以更改填充。更改TD的填充,这将使单元格更大,并使用增加的填充将文本推离侧面。但是,如果您有边界线,它仍然不是您想要的。
border-bottom
并padding-bottom
意味着边界将填充以下。
看一下border-collapse:独立属性(默认)和 border-spacing属性。
首先,必须使用border-collapse 分隔它们,然后可以使用border-spacing定义列和行之间的空间。
实际上,这两种CSS属性在每个浏览器中都得到很好的支持, 请参见此处。
table {border-collapse: separate; border-spacing: 10px 20px;}
table,
table td,
table th {border: 1px solid black;}
<table>
<tr>
<td>Some text - 1</td>
<td>Some text - 1</td>
</tr>
<tr>
<td>Some text - 2</td>
<td>Some text - 2</td>
</tr>
<tr>
<td>Some text - 3</td>
<td>Some text - 3</td>
</tr>
</table>
好,你可以
tr.classname td {background-color:red; border-bottom: 5em solid white}
确保在td而非行上设置了背景色。这应该适用于大多数浏览器...(Chrome,即经过ff测试)
您需要border-collapse: separate;
在桌子上摆放;大多数浏览器默认样式表均始于border-collapse: collapse;
,这会减少边框间距。
另外,border-spacing:在而TD
不是上进行TR
。
尝试:
<html><head><style type="text/css">
#ex { border-collapse: separate; }
#ex td { border-spacing: 1em; }
</style></head><body>
<table id="ex"><tr><td>A</td><td>B</td></tr><tr><td>C</td><td>D</td></tr></table>
</body>
您可以在表格中使用line-height:
<table style="width: 400px; line-height:50px;">
答案来不及了:)
如果将float应用于tr
元素,则可以在具有margin
属性的两行之间进行间隔。
table tr{
float: left
width: 100%;
}
tr.classname {
margin-bottom:5px;
}
display
属性设置block
为该行。这使行具有边距。垂直边距“ 适用于:除表显示类型以外的所有元素,而不是表标题,表和内联表 ”。由于table-row
不是所有这些例外,因此不算在内。通过执行操作,您可能会达到相同的效果。tr {display:block;}
但是,我会在复杂的表中使用这两种方法中的任何一种,但请注意。它可能不会达到您的期望。
为了产生行间距的错觉,将背景色应用于行,然后创建带有白色的粗边框,从而创建一个“空格” :)
tr
{
background-color: #FFD700;
border: 10px solid white;
}
分配表间距的正确方法是使用cellpadding和cellspacing,例如
<table cellpadding="4">
适用于2015年的大多数最新浏览器。简单的解决方案。它不适用于透明,但是与Thoronwen的答案不同,我无法获得任何尺寸的透明渲染。
tr {
border-bottom:5em solid white;
}
我意识到这是对旧线程的一种答案,可能不是所要求的解决方案,但是尽管所有建议的解决方案都无法满足我的需要,但该解决方案对我有用。
我有2个表格单元格,一个具有背景色,另一个具有边框色。上述解决方案消除了边界,因此右侧的单元格似乎漂浮在空中。该诀窍的解决方案是更换table
,tr
并且td
用的div和相应类:表是div id="table_replacer"
,TR将div class="tr_replacer"
与TD将div class="td_replacer"
(改变结束标记的div也很明显)
为了解决我的问题,css是:
#table_replacer{display:table;}
.tr_replacer {border: 1px solid #123456;margin-bottom: 5px;}/*DO NOT USE display:table-row! It will destroy the border and the margin*/
.td_replacer{display:table-cell;}
希望这对某人有帮助。
这是一个简单而优雅的解决方案,但有一些警告:
考虑到这一点,请尝试以下操作:
td {padding:5px 8px;border:2px solid blue;background:#E0E0E0} /* lets say the cells all have this padding and border, and the gaps should be white */
tr.gapbefore td {overflow:visible}
tr.gapbefore td::before,
tr.gapbefore th::before
{
content:"";
display:block;
position:relative;
z-index:1;
width:auto;
height:0;
padding:0;
margin:-5px -10px 5px; /* 5px = cell top padding, 10px = (cell side padding)+(cell side border width)+(table side border width) */
border-top:16px solid white; /* the size & color of the gap you want */
border-bottom:2px solid blue; /* this replaces the cell's top border, so should be the same as that. DOUBLE IT if using border-collapse:separate */
}
您实际上在做的是贴一个矩形 ::before
块到要排成一行的所有单元格的顶部。这些块从单元格中伸出一点以重叠现有边界,将其隐藏。这些块只是夹在中间的顶部和底部边框:顶部边框形成间隙,底部边框重新创建单元格原始顶部边框的外观。
请注意,如果表格和单元格周围都有边框,则需要进一步增加“块”的水平-ve边距。因此,对于4px的表格边框,您可以使用:
margin:-5px -12px 5px; /* 14px = original 10px + 2px for 'uncollapsed' part of table border */
并且如果您的表格使用border-collapse:separate
而不是border-collapse:collapse
,那么您将需要(a)使用完整的表格边框宽度:
margin:-5px -14px 5px; /* 14px = original 10px + 4px full width of table border */
...以及(b)替换现在需要在间隙下方显示的边框的双倍宽度:
border-bottom:4px solid blue; /* i.e. 4px = cell top border + previous row's bottom border */
如果愿意,该技术可以轻松地应用于.gapafter版本,也可以轻松创建垂直(列)间隙而不是行间隙。
这是一个可在实际操作中查看的Codepen:https ://codepen.io/anon/pen/agqPpW
在这里,这个工作顺利:
#myOwnTable td { padding: 6px 0 6px 0;}
我想您可以通过指定需要的td来制定更细粒度的布局。
你有没有尝试过:
tr.classname { margin-bottom:5em; }
另外,每个td也可以调整:
td.classname { margin-bottom:5em; }
要么
td.classname { padding-bottom:5em; }
div.el { display: table-row; margin: 10px; }
,而margin不做任何事。我知道它与实际的表有些不同,但是不应该...