数据库 Jquery - 使用 ScrollY 时列标题未对齐
Posted
技术标签:
【中文标题】数据库 Jquery - 使用 ScrollY 时列标题未对齐【英文标题】:Database Jquery - Column Headers Misalign when using ScrollY 【发布时间】:2017-12-07 00:40:48 【问题描述】:我正在使用 jQuery 的 DataTables 和 Bootstrap。所以我遇到的问题是,当我在“已完成”和“死”选项卡之间切换时,“死”选项卡的列标题会在左侧聚集在一起,直到我单击它们然后它们正确对齐。每当我刷新时都会发生这种情况。我尝试将 CSS 与 overflow:auto 一起使用,但这会使我的整个面板可滚动,这是我不想要的。我希望在滚动表格时标题保持固定。
<div class = 'row'>
<div class='col-lg-11'>
<div id="pane3" >
<ul class="nav nav-tabs">
<li class="active">
<a href="#4a" data-toggle="tab">My Completed</a>
</li>
<li>
<a href="#4b" id="deadTab" data-toggle="tab">Dead Requests</a>
</li>
</ul>
<div class="tab-content">
<div class='tab-pane active' id ="4a">
<!-- <div id="" style=" width: 100%; position:relative; height:200px;"> -->
<table id='completed' class="table table-striped table-hover">
<thead>
<tr>
<th>Req. #</th>
<th>Project #</th>
<th>Client Name</th>
<th>Program</th>
<th>Request Type</th>
<th>Assignee</th>
<th>Completed Date</th>
<th>Clone</th>
</tr>
</thead>
<tbody>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
</tbody>
</table>
<!-- </div> -->
</div>
<div class='tab-pane' id ="4b">
<!-- <div id="" style=" overflow:auto; position:relative; "> -->
<table id='dead' class="table table-striped table-hover">
<thead>
<tr>
<th>Req. #</th>
<th>Project #</th>
<th>Client Name</th>
<th>Program</th>
<th>Request Type</th>
<th>Assignee</th>
<th>Dead Date</th>
<th>Restart</th>
</tr>
</thead>
<tbody>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
</tbody>
</table>
<!-- </div> -->
</div>
</div>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function()
$('#completed').DataTable(
"paging":false,
// "fixedHeader": true,
"scrollY": "140px",
"table-layout":"fixed",
"columnDefs":[
"width":60, "targets":0,
"width":60, "targets":1,
"width":60, "targets":2,
"width":60, "targets":3,
"width":90, "targets":4,
"width":90, "targets":5,
"width":90, "targets":6,
"width":90, "targets":7,
]
);
$('#dead').DataTable(
"paging":false,
"fixedHeader": true,
"scrollY": "140px",
"table-layout":"fixed",
"columnDefs":[
"width":60, "targets":0,
"width":60, "targets":1,
"width":60, "targets":2,
"width":60, "targets":3,
"width":90, "targets":4,
"width":90, "targets":5,
"width":90, "targets":6,
"width":90, "targets":7,
]
// "table-layout":"fixed"
);
);
</script>
【问题讨论】:
【参考方案1】:问题是您的另一个选项卡已隐藏 (display: none
)。您可以在dead
选项卡显示如下后初始化您的数据表:
$('#completed').DataTable(
"paging": false,
// "fixedHeader": true,
"scrollY": "140px",
"table-layout": "fixed",
"columnDefs": [
"width": 60,
"targets": 0
,
"width": 60,
"targets": 1
,
"width": 60,
"targets": 2
,
"width": 60,
"targets": 3
,
"width": 90,
"targets": 4
,
"width": 90,
"targets": 5
,
"width": 90,
"targets": 6
,
"width": 90,
"targets": 7
,
]
);
$('#deadTab').one('shown.bs.tab', function(e)
$('#dead').DataTable(
"paging": false,
"fixedHeader": true,
"scrollY": "140px",
"table-layout": "fixed",
"columnDefs": [
"width": 60,
"targets": 0
,
"width": 60,
"targets": 1
,
"width": 60,
"targets": 2
,
"width": 60,
"targets": 3
,
"width": 90,
"targets": 4
,
"width": 90,
"targets": 5
,
"width": 90,
"targets": 6
,
"width": 90,
"targets": 7
,
]
// "table-layout":"fixed"
);
)
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<link rel="stylesheet" href="//cdn.datatables.net/1.10.15/css/jquery.dataTables.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script src="//cdn.datatables.net/1.10.15/js/jquery.dataTables.min.js"></script>
<div class="container">
<div class='row'>
<div class='col-lg-11'>
<div id="pane3">
<ul class="nav nav-tabs">
<li class="active">
<a href="#4a" data-toggle="tab">My Completed</a>
</li>
<li>
<a href="#4b" id="deadTab" data-toggle="tab">Dead Requests</a>
</li>
</ul>
<div class="tab-content">
<div class='tab-pane active' id="4a">
<!-- <div id="" style=" width: 100%; position:relative; height:200px;"> -->
<table id='completed' class="table table-striped table-hover">
<thead>
<tr>
<th>Req. #</th>
<th>Project #</th>
<th>Client Name</th>
<th>Program</th>
<th>Request Type</th>
<th>Assignee</th>
<th>Completed Date</th>
<th>Clone</th>
</tr>
</thead>
<tbody>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
</tbody>
</table>
<!-- </div> -->
</div>
<div class='tab-pane' id="4b">
<!-- <div id="" style=" overflow:auto; position:relative; "> -->
<table id='dead' class="table table-striped table-hover">
<thead>
<tr>
<th>Req. #</th>
<th>Project #</th>
<th>Client Name</th>
<th>Program</th>
<th>Request Type</th>
<th>Assignee</th>
<th>Dead Date</th>
<th>Restart</th>
</tr>
</thead>
<tbody>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>john@e</td>
<td>john@e</td>
<td>john@e</td>
<td>july@example.com</td>
<td>6/12/2017</td>
<td><button type="button" class="btn btn-primary btn-xs">View Form</button></td>
</tr>
</tbody>
</table>
<!-- </div> -->
</div>
</div>
</div>
</div>
</div>
</div>
【讨论】:
以上是关于数据库 Jquery - 使用 ScrollY 时列标题未对齐的主要内容,如果未能解决你的问题,请参考以下文章
使用 Google Chrome 启用 scrollX 或 scrollY 时,数据表中出现重复的空标题
使用“scrollY”时无法让 DataTables 标题行对齐