标题不与列宽对齐。 JsFiddle
我正在使用:
以下是我正在使用的代码:
JS:
$(document).ready(function() {
var aoColumns = [null,null,null,null,null,null,null,null,null,null,null];
var oTable = $('#example').dataTable( {
"sScrollX": "100%",
"sScrollXInner": "150%",
"bPaginate": false,
"bAutoWidth": false,
"aoColumns": aoColumns
} );
var oFC = new FixedColumns( oTable, {
"iLeftColumns": 4
} );
oTable.fnAdjustColumnSizing();
});
HTML:
<body>
<div class="container">
<table width="100%" cellpadding="0" cellspacing="0" border="1" id="example">
<thead>
<tr>
<th rowspan="2">Branch</th>
<th rowspan="2">Object</th>
<th rowspan="2">Address</th>
<th rowspan="2">Count</th>
<th colspan="7">Availability</th>
</tr>
<tr>
<th>15</th>
<th>16</th>
<th>17</th>
<th>18</th>
<th>19</th>
<th>20</th>
<th>21</th>
</tr>
</thead>
<tbody>
<tr>
<td>United States of America, Washington</td>
<td>ABC-123</td>
<td>1514 Amber Pond Highway, Nohead Bottom, Washington, 99205-8224, US, (425) 023-9448</td>
<td><a href="#">7</a></td>
<td>-</td><td>-</td><td>-</td>
<td>-</td><td>-</td><td>-</td><td>-</td>
</tr>
<tr>
<td>United States of America, South Dakota</td>
<td>DEF-456</td>
<td>7827 Stony Pointe, Sunsweet, South Dakota, 57006-2156, US, (605) 621-7800</td>
<td><a href="#">7</a></td>
<td>-</td><td>-</td><td>-</td>
<td>-</td><td>-</td><td>-</td><td>-</td>
</tr>
<tr>
<td>United States of America, Newfoundland</td>
<td>XYZ-549</td>
<td>2379 Dewy Pioneer Highlands, Humbug, Newfoundland, A7O-6P5, CA, (709) 217-5115</td>
<td><a href="#">7</a></td>
<td>-</td><td>-</td><td>-</td>
<td>-</td><td>-</td><td>-</td><td>-</td>
</tr>
<tr>
<td>United States of America, Washington</td>
<td>GHI-789</td>
<td>5842 Easy Bay, Kravaksarak, Washington, 98428-9376, US, (425) 998-1922</td>
<td><a href="#">7</a></td>
<td>-</td><td>-</td><td>-</td>
<td>-</td><td>-</td><td>-</td><td>-</td>
</tr>
</tbody>
</table>
</div>
</body>
答案 0 :(得分:2)
问题是由sScrollX滚动条引起的,它为右侧的列添加了额外的水平空间,这就是为什么其他的(没有滚动条)在标题上变短的原因。
如果您对sScrollX行进行注释,则列会正确对齐。
---更新---
要使用js修复宽度,这将起作用:
// *** FIX WIDTHS ON LEFT SIDE ***
var widths = [];
// first fix widths on tbody ...
$('.DTFC_LeftBodyWrapper thead th').each(
function(){
$(this).css('width', $(this).width());
});
// ... now save the actual widths on array
$('.DTFC_LeftBodyWrapper thead th').each(
function(){
widths.push($(this).width());
});
// ... and now update widths on thead
$('.DTFC_LeftHeadWrapper thead th').each(
function(i, val){
console.log('i:', i, ', width:', widths[i]);
$(this).css('width', widths[i]);
});
我更新了jsfiddle
注意:我还将Count
更改为Cnt
,因为它在jsfiddle窗口上太长了,导致了额外的宽度问题。
答案 1 :(得分:2)
数据表在包含水平填充时会错误计算宽度。
我通过从th中删除填充来解决这个问题,在其中添加一个span,然后将填充添加到span。
即
<style>
th {padding: 0}
th > span {padding: 0 10px}
<style>
像这样更改标记:
<tr>
<th rowspan="2"><span>Branch</span></th>
<th rowspan="2"><span>Object</span></th>
</tr>
答案 2 :(得分:1)
我可以通过重置th
的边距并填充为零来解决它:
th {
padding: 0 !important;
margin: 0 !important;
}