HTML CSS , table TH 和 TD 不在同一行
HTML CSS , table TH and TD are not in same line
下面打开link好像TH和TD不在同一行。原因可能是因为滚动条。如何解决此问题,以便即使滚动 TD 和 TH 也会在同一行?
table {
box-sizing: border-box;
-moz-box-sizing: border-box;
display: flex;
flex-direction: column;
align-items: stretch;
height: 500px; /* this can vary */
}
https://plnkr.co/edit/fcdXKE?p=preview
tbody
中的滚动条正在减小他的宽度,而 thead
中没有。
这就是为什么 thead 中的 20% 宽度与 tbody 中的 20% 宽度不匹配的原因。
您可以在 thead
中的 tr
上设置填充,但我不确定它是否会跨浏览器...
您也可以将其用于支持 webkit 的浏览器 (CanIUse) :
::-webkit-scrollbar {
display: none;
}
对于 Firefox,无法使用 CSS 自定义它,您将不得不处理 jQuery(有关更多信息,请参阅 thirtydot 的回答)。
有图书馆制作好看的滚动条:Custom Content Scroller
获取th
的偏移量,将其与td
的偏移量进行比较,然后设置th
的margin-left
属性因为这两者的区别应该有效。
// set id on table
var dataTable = document.getElementById("dataTable");
var tableHead = dataTable.getElementsByTagName("thead")[0];
var headRow = tableHead.getElementsByTagName("tr")[0];
var tds = document.querySelectorAll('#dataTable tbody td');
var ths = document.querySelectorAll('#dataTable thead th');
for(i=0;i<tds.length;i++){
var offset=tds[i].offsetLeft- ths[i].offsetLeft;
var thToSet = headRow.getElementsByTagName("th")[i];
thToSet.style.marginLeft = offset + "px";
}
下面打开link好像TH和TD不在同一行。原因可能是因为滚动条。如何解决此问题,以便即使滚动 TD 和 TH 也会在同一行?
table {
box-sizing: border-box;
-moz-box-sizing: border-box;
display: flex;
flex-direction: column;
align-items: stretch;
height: 500px; /* this can vary */
}
https://plnkr.co/edit/fcdXKE?p=preview
tbody
中的滚动条正在减小他的宽度,而 thead
中没有。
这就是为什么 thead 中的 20% 宽度与 tbody 中的 20% 宽度不匹配的原因。
您可以在 thead
中的 tr
上设置填充,但我不确定它是否会跨浏览器...
您也可以将其用于支持 webkit 的浏览器 (CanIUse) :
::-webkit-scrollbar {
display: none;
}
对于 Firefox,无法使用 CSS 自定义它,您将不得不处理 jQuery(有关更多信息,请参阅 thirtydot 的回答)。 有图书馆制作好看的滚动条:Custom Content Scroller
获取th
的偏移量,将其与td
的偏移量进行比较,然后设置th
的margin-left
属性因为这两者的区别应该有效。
// set id on table
var dataTable = document.getElementById("dataTable");
var tableHead = dataTable.getElementsByTagName("thead")[0];
var headRow = tableHead.getElementsByTagName("tr")[0];
var tds = document.querySelectorAll('#dataTable tbody td');
var ths = document.querySelectorAll('#dataTable thead th');
for(i=0;i<tds.length;i++){
var offset=tds[i].offsetLeft- ths[i].offsetLeft;
var thToSet = headRow.getElementsByTagName("th")[i];
thToSet.style.marginLeft = offset + "px";
}