【发布时间】:2014-10-06 01:38:07
【问题描述】:
我目前正在尝试创建一个带有斑马条纹的表格,其中条纹的背景颜色会延伸屏幕的整个长度,但行的实际内容保持在表格的范围内。
更具体地说,我正在使用 Bootstrap,所以我希望表格行的内容就像它们在 .container 中一样。
本质上,我正在尝试创建一个如下所示的表格:
<table class="table">
<tr>
<div class="container">
<td>Testing</td>
<td>Testing</td>
</div>
</tr>
<tr>
<div class="container">
<td>Testing</td>
<td>Testing</td>
</div>
</tr>
</table>
...
table, tr {
width: 100%;
}
tr:nth-child(odd) {
background-color: #f4f4b4;
}
理想情况下,背景颜色应该延伸到浏览器窗口的整个长度,但表格的内容应该有一个居中且固定的(尽管响应变化)宽度。
但是,这实际上不起作用,因为将div 放置在tr 元素中是not possible。
这是我解决问题的最佳尝试:http://jsfiddle.net/4L4tatk5/3/
它很接近,但不太有效,因为表格中的单元格(蓝色轮廓)没有对齐到整齐的列中。我尝试为tr 元素修改不同的display 选项,但除display: block 之外的任何其他内容都会导致.container 类被有效地忽略。
解决这个问题的最佳方法是什么?
代码可在jsfiddle 上找到,但作为参考,这是我的 HTML 和 CSS:
HTML
<div class="container control">
<p>
This is an example container (outlined in red) to show where the
contents of the table should be aligned to. Individual cells are
outlined in blue.
</p>
<p>
Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem
ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum
lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem
ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum
lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem
ipsum lorem ipsum lorem ipsum
</p>
</div>
<table class="table test">
<thead>
<tr class="container">
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
</tr>
</thead>
<tbody>
<tr class="container">
<td>abcdefghijklmnop</td>
<td>123456789</td>
<td>foo</td>
</tr>
</tbody>
<tbody>
<tr class="container">
<td>kidke,fjgisklmpi</td>
<td>11</td>
<td>bar</td>
</tr>
</tbody>
<tbody>
<tr class="container">
<td>abcd</td>
<td>2321</td>
<td>hello</td>
</tr>
</tbody>
<tbody>
<tr class="container">
<td>adsfaldfalke</td>
<td>0</td>
<td>world</td>
</tr>
</tbody>
</table>
CSS
@import url('http://getbootstrap.com/dist/css/bootstrap.css');
.control {
border: 1px solid red;
margin-bottom: 2em;
}
.test {
overflow-x: auto;
margin-bottom: 1em;
}
.test thead {
white-space: nowrap;
background-color: #e2e7e8;
}
.test table {
width: 100%;
}
.test thead,
.test tbody,
.test tfoot {
width: 100%;
}
.test tbody:nth-child(odd) {
background-color: #f4f4b4;
}
.test tr {
display: block;
border: 1px solid red;
}
.test th,
.test td {
border: 1px solid blue;
}
【问题讨论】:
-
您知道引导程序中的
.table-striped类吗? getbootstrap.com/css/#tables -
@PeterVR - 是的,但是如果我添加那个类,背景颜色不会拉伸屏幕的整个长度,只会拉伸表格的整个长度。如果我然后让表格拉伸屏幕的整个长度,那么表格的内容不会像它们在容器内一样对齐。
-
@PeterVR 我不认为他的问题是创建条纹,而是他希望条纹延伸到桌子本身的边界之外。
-
“对齐就像它们在容器内一样”是什么意思?
-
@PeterVR - 我认为迈克尔比我更简洁地总结了我想要完成的事情。我已经编辑了我的问题以尝试澄清。
标签: html css twitter-bootstrap html-table css-tables