【发布时间】:2017-03-08 23:07:20
【问题描述】:
我花了很多时间和精力来玩弄和研究这个,但我无法弄清楚如何将列标题与 HTML 中的可滚动表格正文完美对齐。此处和网络上的随机位置还发布了其他解决方案和技术,但它们都产生了不一致的结果,尤其是随机数据量。
这是JSFiddle。
请注意,我应用了自定义 CSS,但也应用了 Bootstrap 的 CSS。请将结果面板展开到足够大,以使 HTML 标头不换行。
总结 HTML,有两个表格 - 一个用于列标题,一个用于数据单元格。每个都包含在<div> 中,它允许单元格可滚动并设置列的宽度。考虑到有时会出现滚动条(数据是动态的,我不知道会有多少数据),表格单元格周围的 <div> 包装器设置为始终显示滚动条,而表头应用了这个 CSS:
.grid-container .column-wrapper {
width: calc(100% - 16px); /* 16px is the approximate width of the scroll bar */
}
当缩放为 100% 时,这适用于我的显示器,但在其他显示器上,网格线未完全对齐 - 可能相差 4px。使用这些网格的应用程序广泛使用它们,其中一些完美对齐,而另一些则关闭。不幸的是,我还没有找到正确渲染和不正确渲染的模式。
我不想要 JavaScript 解决方案 - 这些网格已经应用了很多 JavaScript 以使它们具有交互性,有时会渲染大量数据(超过 7,000 行),我不想做一些时髦的事情,比如循环遍历每一行,检测宽度,然后应用修复。
谢谢大家,如果您需要更多信息,请告诉我。
编辑 ---------------------------------- ---------------------------------------
我们的用户使用 Chrome 35.0.1916.153,我已经开始明确设置滚动条的宽度以确保它是 16 像素:
::-webkit-scrollbar {
width: 16px;
border: 1px solid #ccc;
}
同样,这在我的显示器上有效,但目前我无法告诉其他人的结果。这是更新后的JSFiddle。
【问题讨论】:
-
当您说缩放时,您是指浏览器的缩放功能吗?因为如果是这样,那么当您缩小时滚动条不会被重新调整大小,这就是导致对齐失败的原因。通常使用缩放功能来模拟大屏幕或小屏幕上的响应并不是最佳做法。滚动条的宽度也不一样stackoverflow.com/questions/5793376/…
-
对 - 我们使用最新版本的 Chrome (35.0.1916.153) 和用户一样,并假设用户坚持 100%。我只是把它作为一个额外的细节扔在那里。该应用无法在移动设备上运行,因此响应能力并不重要。
标签: html css twitter-bootstrap