能用 position: sticky 实现,但前提是彻底放弃 标签结构,改用 + display: grid 模拟表格,并满足滚动上下文、直系子元素、z-index 层叠三要素。

直接说结论:能用 position: sticky 实现,但前提是彻底放弃 <table> 标签结构,改用 <code><div> + <code>display: grid 模拟表格,并满足滚动上下文、直系子元素、z-index 层叠三要素。
为什么 position: sticky 在 Grid 表格里不生效?
根本不是写法错了,而是浏览器找不到滚动锚点。常见错误现象包括:<thead> 完全不动、滚动时闪一下就消失、或只在 Chrome 有效而 Safari 失效。
<ul><li><code><table> 是一个整体渲染块,即使父容器设了 <code>overflow-y: auto,<thead> 和 <code><tbody> 仍走 table 渲染逻辑,不响应 Grid 轨道的滚动边界
<li>必须让 <code><thead> 和 <code><tbody> 成为 Grid 容器的**直系子元素**(即不能嵌套在 <code><table> 里)
<li>Grid 容器必须有明确高度(<code>height 或 max-height),且显式声明 overflow-y: auto
如何用 <div> 正确模拟表格结构?
<p>关键不在“像不像”,而在列宽对齐与层叠可控。脱离 <code><table> 后,列宽容易错位,尤其内容长度差异大时。
<ul>
<li>给 Grid 容器设 <code>grid-template-columns: 120px 1fr 150px 80px(按实际列数调整)
<div class="thead"> 和每个 <code><div class="tr"> 都设 <code>display: contents,或统一用 grid-column: 1 / -1 占满整行
<div class="td">)设 <code>grid-column: span 1 + min-width: 0,防止长文本撑开列宽
scrollbar-gutter: stable both(Chrome 94+ / Firefox 97+ 支持),或手动预留 padding-right: 16px
滚动时表头被内容穿透覆盖怎么办?
这不是 z-index 数值不够的问题,而是 <thead> 和 <code><tbody> 处于同一 stacking context,且 <code><tbody> 子项未限制高度导致渲染溢出。
<ul><li><code><thead> 必须设 <code>position: sticky; top: 0; z-index: 10
<tbody> 内部的每一行(<code><div class="tr">)建议设 <code>height: 48px 或 min-height: 48px,避免高度塌陷上浮
<tbody> 直接设 <code>height: 100% —— Grid 中高度继承链复杂,极易撑破容器
grid-template-areas 不可用,得退回 grid-column-start/grid-column-end 手动定位真正容易被忽略的是:滚动上下文必须由 Grid 容器自身提供,而不是靠外层包裹 div;同时,所有列宽定义必须在容器级一次性声明,不能靠子项各自设 width —— 否则 Grid 的轨道对齐机制就失效了。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更










