固定列标题宽度与主体列宽不匹配
标题与列宽不对齐。 JsFiddle 。
截图
我正在使用:
- ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.0/css/jquery.dataTables.css
- ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.0/css/jquery.dataTables_themeroller.css
- datatables.net/release-datatables/media/js/jquery.js
- datatables.net/release-datatables/media/js/jquery.dataTables.js
- datatables.net/release-datatables/extras/FixedColumns/media/js/FixedColumns.js
这是我正在使用的代码:
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:
Branch Object Address Count Availability 15 16 17 18 19 20 21 United States of America, Washington ABC-123 1514 Amber Pond Highway, Nohead Bottom, Washington, 99205-8224, US, (425) 023-9448 7 - - - - - - - United States of America, South Dakota DEF-456 7827 Stony Pointe, Sunsweet, South Dakota, 57006-2156, US, (605) 621-7800 7 - - - - - - - United States of America, Newfoundland XYZ-549 2379 Dewy Pioneer Highlands, Humbug, Newfoundland, A7O-6P5, CA, (709) 217-5115 7 - - - - - - - United States of America, Washington GHI-789 5842 Easy Bay, Kravaksarak, Washington, 98428-9376, US, (425) 998-1922 7 - - - - - - -
当数据包包含水平填充时,它会错误计算宽度。
我通过从th中删除填充来解决这个问题,在其中添加一个span,然后将填充添加到span。
即。
像这样更改标记:
Branch Object
问题是由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窗口上太长了,这导致了额外的宽度问题。
我可以通过将th
的边距和填充重置为零来解决它:
th { padding: 0 !important; margin: 0 !important; }