展示
左右两侧表格内容完全一致:首列吸附在容器的横向滚动上,表头则希望吸附在页面的纵向滚动上。请滚动页面,对比两侧表头的表现差异。
当前浏览器尚未支持「单轴滚动容器」特性,右侧的修复效果需要在 Chrome 154+(Beta/Dev/Canary)中查看。
修复前:overflow-x: auto
| 著作 | 章节 | 核心知识点 | 篇幅 | 难度 | 状态 |
|---|---|---|---|---|---|
| 《CSS世界》 | 第1章 概述 | CSS 世界观与学习路径 | 32 页 | 入门 | 已出版 |
| 《CSS世界》 | 第4章 盒模型四大家族 | width、height 与 box-sizing | 46 页 | 进阶 | 已出版 |
| 《CSS世界》 | 第6章 层叠规则 | z-index 与层叠上下文 | 38 页 | 进阶 | 已出版 |
| 《CSS世界》 | 第12章 流的破坏与保护 | float、BFC 与清除浮动 | 52 页 | 进阶 | 已出版 |
| 《CSS选择器世界》 | 第1章 选择器概述 | 选择器分类与优先级计算 | 28 页 | 入门 | 已出版 |
| 《CSS选择器世界》 | 第3章 用户行为伪类 | :hover、:focus 与交互态 | 44 页 | 进阶 | 已出版 |
| 《CSS选择器世界》 | 第5章 伪元素 | ::before、::after 与 content | 40 页 | 进阶 | 已出版 |
| 《CSS选择器世界》 | 第8章 选择器性能 | 匹配原理与书写优化 | 22 页 | 进阶 | 已出版 |
| 《CSS选择器世界第二版》 | 第2章 逻辑组合伪类 | :is()、:not()、:where() | 36 页 | 进阶 | 已出版 |
| 《CSS选择器世界第二版》 | 第4章 子元素过滤伪类 | :nth-child() 大家族 | 42 页 | 进阶 | 已出版 |
| 《CSS选择器世界第二版》 | 第7章 树结构伪类 | :has() 与父选择器 | 48 页 | 高级 | 已出版 |
| 《CSS选择器世界第二版》 | 第10章 选择器的未来 | 新特性与兼容处理 | 30 页 | 高级 | 已出版 |
| 《CSS新世界》 | 第3章 更强的布局能力 | Flex、Grid 与 masonry | 56 页 | 进阶 | 已出版 |
| 《CSS新世界》 | 第5章 视觉表现新特性 | filter、混合模式与裁剪 | 44 页 | 进阶 | 已出版 |
| 《CSS新世界》 | 第8章 变量与函数 | 自定义属性与 calc() | 34 页 | 进阶 | 已出版 |
| 《CSS新世界》 | 第11章 新的 @ 规则 | @layer、@container、@scope | 50 页 | 高级 | 已出版 |
| 《HTML并不简单》 | 第2章 表单元素 | input 的百种形态 | 46 页 | 入门 | 已出版 |
| 《HTML并不简单》 | 第4章 语义化标签 | 标签选择与可访问性 | 38 页 | 入门 | 已出版 |
| 《HTML并不简单》 | 第6章 原生交互 | dialog、popover 与 details | 42 页 | 进阶 | 已出版 |
| 《HTML并不简单》 | 第9章 性能与加载 | 资源提示与预加载策略 | 30 页 | 进阶 | 已出版 |
纵向滚动时,表头跟着页面一起滚走了。
修复后:overflow-x: auto + overflow-y: clip
| 著作 | 章节 | 核心知识点 | 篇幅 | 难度 | 状态 |
|---|---|---|---|---|---|
| 《CSS世界》 | 第1章 概述 | CSS 世界观与学习路径 | 32 页 | 入门 | 已出版 |
| 《CSS世界》 | 第4章 盒模型四大家族 | width、height 与 box-sizing | 46 页 | 进阶 | 已出版 |
| 《CSS世界》 | 第6章 层叠规则 | z-index 与层叠上下文 | 38 页 | 进阶 | 已出版 |
| 《CSS世界》 | 第12章 流的破坏与保护 | float、BFC 与清除浮动 | 52 页 | 进阶 | 已出版 |
| 《CSS选择器世界》 | 第1章 选择器概述 | 选择器分类与优先级计算 | 28 页 | 入门 | 已出版 |
| 《CSS选择器世界》 | 第3章 用户行为伪类 | :hover、:focus 与交互态 | 44 页 | 进阶 | 已出版 |
| 《CSS选择器世界》 | 第5章 伪元素 | ::before、::after 与 content | 40 页 | 进阶 | 已出版 |
| 《CSS选择器世界》 | 第8章 选择器性能 | 匹配原理与书写优化 | 22 页 | 进阶 | 已出版 |
| 《CSS选择器世界第二版》 | 第2章 逻辑组合伪类 | :is()、:not()、:where() | 36 页 | 进阶 | 已出版 |
| 《CSS选择器世界第二版》 | 第4章 子元素过滤伪类 | :nth-child() 大家族 | 42 页 | 进阶 | 已出版 |
| 《CSS选择器世界第二版》 | 第7章 树结构伪类 | :has() 与父选择器 | 48 页 | 高级 | 已出版 |
| 《CSS选择器世界第二版》 | 第10章 选择器的未来 | 新特性与兼容处理 | 30 页 | 高级 | 已出版 |
| 《CSS新世界》 | 第3章 更强的布局能力 | Flex、Grid 与 masonry | 56 页 | 进阶 | 已出版 |
| 《CSS新世界》 | 第5章 视觉表现新特性 | filter、混合模式与裁剪 | 44 页 | 进阶 | 已出版 |
| 《CSS新世界》 | 第8章 变量与函数 | 自定义属性与 calc() | 34 页 | 进阶 | 已出版 |
| 《CSS新世界》 | 第11章 新的 @ 规则 | @layer、@container、@scope | 50 页 | 高级 | 已出版 |
| 《HTML并不简单》 | 第2章 表单元素 | input 的百种形态 | 46 页 | 入门 | 已出版 |
| 《HTML并不简单》 | 第4章 语义化标签 | 标签选择与可访问性 | 38 页 | 入门 | 已出版 |
| 《HTML并不简单》 | 第6章 原生交互 | dialog、popover 与 details | 42 页 | 进阶 | 已出版 |
| 《HTML并不简单》 | 第9章 性能与加载 | 资源提示与预加载策略 | 30 页 | 进阶 | 已出版 |
纵向滚动时,表头吸顶固定在页面顶部。
代码
CSS代码:
/* 滚动容器 */
.table-wrap {
overflow-x: auto;
background-color: #fff;
border: 1px solid #d0d0d5;
}
/* 修复:纵向轴使用 clip,容器仅保留横向滚动 */
.table-wrap.fixed {
overflow-y: clip;
}
/* 表头吸顶 */
thead th {
position: sticky;
top: 0;
z-index: 2;
background-color: #e8eef7;
}
/* 首列吸附在容器的左侧 */
th[scope="row"] {
position: sticky;
left: 0;
z-index: 1;
background-color: #fff;
}
thead th:first-child {
left: 0;
z-index: 3;
background-color: #e8eef7;
}
HTML代码:
<!-- 修复前 -->
<div class="table-wrap origin">
<table>
<thead>
<tr>
<th scope="col">著作</th>
<th scope="col">章节</th>
<th scope="col">核心知识点</th>
<th scope="col">篇幅</th>
<th scope="col">难度</th>
<th scope="col">状态</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">《CSS世界》</th>
<td>第1章 概述</td>
<td>CSS 世界观与学习路径</td>
<td>32 页</td>
<td>入门</td>
<td>已出版</td>
</tr>
<!-- 更多数据行 -->
</tbody>
</table>
</div>
<!-- 修复后:仅结构一致,容器多了 overflow-y: clip -->
<div class="table-wrap fixed">
<table>……</table>
</div>
JS代码:
// 特性检测:是否支持单轴滚动容器
if (CSS.supports("named-feature(single-axis-scroll-container)") == false) {
document.getElementById("unsupported").hidden = false;
}
高度占位符