jqueryのdatatablesを利用した際、ScrollYを指定するとヘッダがずれることがあります。
簡単に言うと
解決策
[columns.adjust()]を使う
datatableには、再度列の調整をしてくれる関数が提供されています。
var table = $('#datatable1').DataTable({ scrollY: 360, ... }); table.columns.adjust();
注意点
$(‘#datatable1’).datatable({});でも表はできますがcolumns.adjust()関数は動きません。
$(‘#datatable1’).Datatable({});なら動きます。
×:datatable
〇:Datatable
これに結構な時間ハマった。
タブなどの[display:none;]は切り替えで再度[columns.adjust()]を実施する
TableをCSS上で表示切替する場合は、CSSのdisplay: none;を切り替えることも多いと思います。
切り替え処理時に、columns.adjust()処理を追加することで、ずれなく表示できます。
レスポンシブなら[$(window).on(‘resize’…]で制御する
レスポンシブに設定するなら、Windowサイズを変更したときに発火させると良いです。
スマホの縦表示、横表示や
PCブラウザの起動時と、最大化時などに使えます。
var table = $('#datatable1').DataTable({ scrollY: 360, ... }); $(window).on('resize', function(){ table.columns.adjust(); });