Unsupported CSS features and workarounds
At a glance
Section titled “At a glance”The writeHtml engine renders content in one forward pass and never re-lays out earlier content. Some Cascading Style Sheets (CSS) behaviors do not fit that model. This page lists the specific behaviors the engine does not apply and gives you a supported workaround for each one. For per-module verification status, read the CSS support matrix.
These limitations are bounded and are not a roadmap. Each entry names the exact unsupported behavior, not the whole property.
Unsupported behaviors
Section titled “Unsupported behaviors”| Behavior | What is not applied | Workaround |
|---|---|---|
position: absolute / position: relative offset layout | The engine places boxes in document order. The top/right/bottom/left offsets that move a positioned box out of normal flow are not applied. Static positioning works. | Use tables or flex in normal flow for placement. |
Named grid-template-areas | The engine does not implement placement by named grid areas. Explicit line-based grid placement works. | Place items with explicit grid lines, or use a table. |
rowspan across a page break (degraded) | A rowspan cell renders on one page. When the table paginates, a spanning cell that crosses the page boundary fragments as described in Architectural Decision Record (ADR-007), and a cell too tall to split raises UnsplittableContentException. | For grouped rows that must stay intact during pagination, use a float or category-header row instead of a tall rowspan. |
overflow: hidden background paint-order | overflow: hidden does not change the background paint-order, and it does not clip a child’s background to an ancestor’s rounded or sized box. | Apply the background to the element that owns the clip, or avoid relying on clipped backgrounds. |
| Side-by-side wrapping prose in a flex item | A flex item with wrapping prose overflows its track instead of wrapping within the track. | Use a two-column table with explicit pixel column widths. |
| Percentage column width that resolves to zero | When a % column width has no resolvable basis, it parses to 0 and triggers the column-squeeze warning. | Give side-by-side columns explicit pixel widths. |
See also
Section titled “See also”- CSS support matrix — per-module verification status and supported features.
- HTML: HTML+CSS to PDF rendering subsystem — the single-pass model behind these limits.
- Lay out tables in HTML — table patterns for replacing offset positioning and flex-wrapped prose.