mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-09-25 01:53:03 +02:00
fix(css): restore bottom spacing on content pages in Firefox
apropos/licence/charte use .page-content as a nested scroll container
(overflow-y:auto) inside html/body {height:100%; overflow:hidden} flex.
Firefox drops/clips that container's own padding-bottom (and last-child
margin) from the scrollable area -- scrollHeight came out ~80px short and
the last ~80px of content was unreachable. Chromium honours the padding.
Move the trailing space off the container padding onto a real content
spacer (.page-content > article::after, display:block; height) which both
browsers count as scrollable content. Verified via Playwright (Chromium +
Firefox): delta between article and scrollHeight is now 0 in both on all
three pages, consistent at all breakpoints. not-found unaffected (loads
its own not-found.css). 294 PHPUnit tests pass.
This commit is contained in:
@@ -41,6 +41,7 @@
|
|||||||
- [x] #docs-cleanup-changes [docs] Update docs for the cleanup-page + GC changes made: admin README cleanup.php entry -> "Cleanup page (Corbeille — restore/delete trashed files)"; deployment.md adds a paragraph explaining abandoned uploads are auto-GC'd hourly and the page (titled Nettoyage) now only shows the Corbeille; added `just cleanup-tmp-uploads` recipe and documented it in development.md alongside cleanup-drafts.
|
- [x] #docs-cleanup-changes [docs] Update docs for the cleanup-page + GC changes made: admin README cleanup.php entry -> "Cleanup page (Corbeille — restore/delete trashed files)"; deployment.md adds a paragraph explaining abandoned uploads are auto-GC'd hourly and the page (titled Nettoyage) now only shows the Corbeille; added `just cleanup-tmp-uploads` recipe and documented it in development.md alongside cleanup-drafts.
|
||||||
|
|
||||||
## Completed
|
## Completed
|
||||||
|
- [x] #fix-content-page-bottom-spacing-firefox [!medium] Fix missing bottom spacing at scroll-end on apropos/licence/charte in Firefox. Root cause: `.page-content` is a nested scroll container (overflow-y:auto) inside html/body {height:100%; overflow:hidden} flex; Firefox drops/clips that container's own `padding-bottom` (and last-child margin) from the scrollable area while Chromium honours it — FF scrollHeight came out ~80px SHORTER and the last ~80px of content was unreachable (clipped). Fix: moved trailing space off the container padding (`padding-bottom: 0` at all breakpoints) onto a real content spacer `.page-content > article::after { display:block; height: var(--space-2xl) }` (`var(--space-xl)` below 768px), which both browsers count as scrollable content. VERIFIED via Playwright (Chromium + Firefox): before FF delta=−80 (clipped) vs Chrome 0; after both FF & Chrome delta=0 on licence/apropos and identical on charte; not-found page unaffected (loads its own not-found.min.css). 294 PHPUnit tests pass.
|
||||||
- [x] #cleanup-toc [+admin] Add sidebar TOC to admin cleanup page; drop the "Fichiers temporaires" section level and promote "Téléversements abandonnés" / "Corbeille" from h3 to h2 top-level sections (now TOC entries). Made admin-toc.js rebuild on htmx swap/settle so async-loaded fragment sections enter the TOC.
|
- [x] #cleanup-toc [+admin] Add sidebar TOC to admin cleanup page; drop the "Fichiers temporaires" section level and promote "Téléversements abandonnés" / "Corbeille" from h3 to h2 top-level sections (now TOC entries). Made admin-toc.js rebuild on htmx swap/settle so async-loaded fragment sections enter the TOC.
|
||||||
- [x] #audit-all-docs-and [!high] Audit all docs/ and classify accurate vs stale
|
- [x] #audit-all-docs-and [!high] Audit all docs/ and classify accurate vs stale
|
||||||
- [x] #rewrite-development-md-to-match [!high] Rewrite development.md to match current just dev / app/ layout / PHPUnit
|
- [x] #rewrite-development-md-to-match [!high] Rewrite development.md to match current just dev / app/ layout / PHPUnit
|
||||||
|
|||||||
@@ -14,7 +14,11 @@
|
|||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
scroll-behavior: smooth;
|
scroll-behavior: smooth;
|
||||||
padding: var(--space-xl) var(--space-l) var(--space-2xl);
|
/* Bottom spacing lives on .page-content > article::after (below): Firefox
|
||||||
|
drops/clips the scroll container's own padding-bottom in this nested flex
|
||||||
|
layout, while Chromium honours it — moving the pad into a block pseudo
|
||||||
|
element keeps both browsers consistent. */
|
||||||
|
padding: var(--space-xl) var(--space-l) 0;
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 180px 1fr;
|
grid-template-columns: 180px 1fr;
|
||||||
gap: var(--space-2xl);
|
gap: var(--space-2xl);
|
||||||
@@ -36,7 +40,7 @@
|
|||||||
.page-content {
|
.page-content {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
gap: var(--space-l);
|
gap: var(--space-l);
|
||||||
padding: var(--space-m) var(--space-s) var(--space-xl);
|
padding: var(--space-m) var(--space-s) 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.page-content > article {
|
.page-content > article {
|
||||||
@@ -65,7 +69,19 @@
|
|||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
/* padding-bottom: var(--space-xl); */
|
}
|
||||||
|
|
||||||
|
/* Trailing bottom spacing. Pseudo-element (real content in the scroll area)
|
||||||
|
rather than the container's padding-bottom, which Firefox clips. */
|
||||||
|
.page-content > article::after {
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
height: var(--space-2xl);
|
||||||
|
}
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.page-content > article::after {
|
||||||
|
height: var(--space-xl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.page-content > article * {
|
.page-content > article * {
|
||||||
@@ -259,7 +275,7 @@
|
|||||||
|
|
||||||
@media (max-width: 600px) {
|
@media (max-width: 600px) {
|
||||||
.page-content {
|
.page-content {
|
||||||
padding: var(--space-m) var(--space-s) var(--space-xl);
|
padding: var(--space-m) var(--space-s) 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.page-content > article {
|
.page-content > article {
|
||||||
|
|||||||
Reference in New Issue
Block a user