不支持的 CSS 特性与变通方案
writeHtml 引擎会通过一次正向遍历来渲染内容,绝不会对已经渲染过的内容重新排版。有些 CSS 行为并不适合这一模型。本页列出引擎不会应用的具体行为,并为每一项给出受支持的变通方案。关于各模块的逐项验证状态,请参阅 CSS 支持矩阵。
这些限制范围明确,并不是路线图。每个条目都准确指出不支持的具体行为,而不是否定整个属性。
不受支持的行为
标题为“不受支持的行为”的章节| 行为 | 不会应用的部分 | 变通方案 |
|---|---|---|
position: absolute / position: relative 偏移布局 | 引擎会按文档顺序放置盒子。那些会把已定位盒子移出正常流的 top/right/bottom/left 偏移不会被应用。静态定位可正常工作。 | 在正常流中使用表格或 flex 布局。 |
具名 grid-template-areas | 引擎不实现按具名网格区域放置项目。基于显式网格线的放置可正常工作。 | 使用显式网格线放置项目,或改用表格。 |
跨页断点的 rowspan(降级) | rowspan 单元格会在一页内渲染。当表格分页时,跨越页面边界的跨行单元格会按架构决策记录(ADR-007)所述进行分片;而过高且无法拆分的单元格会引发 UnsplittableContentException。 | 对于分页期间必须保持完整的成组行,请改用浮动行或类别表头行,而不要使用很高的 rowspan。 |
overflow: hidden 的背景绘制顺序 | overflow: hidden 不会改变背景的绘制顺序,也不会将子元素的背景裁剪到祖先元素带圆角或带尺寸的盒子内。 | 将背景应用到执行该裁剪的元素上,或不要依赖被裁剪的背景。 |
| flex 项目内并排换行的正文文本 | 包含可换行正文文本的 flex 项目会溢出其轨道,而不是在轨道内换行。 | 改用带显式像素列宽的两列表格。 |
| 解析为零的百分比列宽 | 当 % 列 width 没有可解析的基准时,它会被解析为 0,并触发列挤压警告。 | 为并排的各列指定显式像素宽度。 |
另请参阅
标题为“另请参阅”的章节- CSS 支持矩阵 — 各模块的逐项验证状态和受支持特性。
- HTML:HTML+CSS 转 PDF 渲染子系统 — 这些限制背后的单遍模型。
- 排版 HTML 表格 — 可替代偏移定位和 flex 换行正文文本的表格方案。