HTML 可滚动表头和正文对齐

标签 html css twitter-bootstrap

我花了很多时间和精力来玩弄和研究这个,但我不知道如何在 HTML 中将列标题与可滚动的表体完美对齐。这里和网络上随机发布了其他解决方案和技术,但它们都产生了不一致的结果,尤其是在随机数据量的情况下。

这是 JSFiddle .

请注意,我应用了自定义 CSS,还有 Bootstrap 的 CSS。请将结果面板扩展到足以让 HTML header 不换行。

为了总结 HTML,有两个表 - 一个用于列标题,一个用于数据单元格。每个都包裹在 <div> 中,它允许单元格滚动并设置列的宽度。考虑到滚动条有时会​​出现(数据是动态的,我不知道会有多少数据),<div>表格单元格周围的包装器设置为始终显示滚动条,表格标题周围的包装器应用了以下 CSS:

.grid-container .column-wrapper {
    width: calc(100% - 16px); /* 16px is the approximate width of the scroll bar */
}

当缩放为 100% 时,这在我的显示器上有效,但在其他显示器上,网格线没有完美对齐 - 可能偏离 4 像素。使用这些网格的应用程序广泛使用它们,其中一些完美对齐,而另一些则关闭。不幸的是,我还没有找到正确渲染和不正确渲染的模式。

我不想要 JavaScript 解决方案 - 这些网格已经应用了很多 JavaScript 来使它们具有交互性,有时会呈现大量数据(超过 7,000 行),我不想做一些时髦的事情,比如循环遍历每行,检测宽度,然后应用修复。

谢谢大家,如果您需要更多信息,请告诉我。

编辑-------------------------------------------- ----------------------------------------

我们的用户使用 Chrome 35.0.1916.153,我已经开始明确设置滚动条的宽度以确保它是 16px:

::-webkit-scrollbar {
    width: 16px;
    border: 1px solid #ccc;
}

同样,这在我的显示器上有效,但目前我无法告诉其他人的结果。这是更新的 JSFiddle .

最佳答案

这是我的解决方案,用于实现表头和可滚动表体之间的列的完美对齐。 我们不知道确切的滚动条宽度,所以:

  1. 我们使表头可滚动,这样它的宽度现在与表体的宽度完全相同

    table.scrollable thead {
      width:100%;
      overflow-y: scroll;
      position: relative; /* for the absolute positioning of 2.*/
    }
    
  2. 我们将 header 滚动箭头屏蔽在 2 个 pad 下

    table.scrollable thead:before {
      position: absolute;
      right: 0;
      width: 16px; height: 20px; content: ''; background-color: menu;
      margin-top: 0em;
    }
    table.scrollable thead:after{
      position: absolute;
      right: 0;
      width: 16px; height: 20px; content: ''; background-color: menu;
      margin-top: -1.2em;
    }
    

这是一个使用 flex css 的 fiddle 示例:https://jsfiddle.net/vyp5j257/2/

或者在这里更新您的 fiddle :http://jsfiddle.net/9g6xo8L6/1/

关于HTML 可滚动表头和正文对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24294571/

相关文章:

html - 图像顶部的 Bootstrap 面板

html - 居中分区框

html - HTML中的数据元素和数据属性有什么区别

javascript - 检查 elem 是否是鼠标悬停在 Google 结果页面上的超链接

html - CSS Foundation 清除默认边距以加入对象

javascript - 光标通过 CSS :hover. 更改,无需移动鼠标即可从 DOM 中删除元素。更新鼠标光标?

javascript - Requirejs domReady 插件 vs Jquery $(document).ready()?

css - SCSS 支持行内注释吗?

PHPmailer 破坏 HTML 正文消息。 (漏洞?)

javascript - 为什么 isNaN 第二次调用时不起作用?