Rolf B: CSS page-break-after funktioniert nicht

Beitrag lesen

Hallo Timo,

Daher ist mein Problem leider noch nicht gelöst.

page-break-after: always; funktioniert bei mir (Chrome 92 und Firefox 91). Dein Problem wird demnach durch die Rahmenbedingungen erzeugt.

MDN schreibt noch dies:

  • This property applies to block elements that generate a box. It won't apply on an empty <div> that won't generate a box.

Willst Du den Umbruch vielleicht durch eingefügte Zusatz-DIVs erzeugen? Leere DIVs erzeugen keine Box. Da müsste zumindest ein &nbsp; hinein. Wenn Du zweiseitig druckst und lediglich den Kapitelbeginn auf eine rechte Seite bringen willst, schau Dir die Werte "recto" oder "right" statt "always" an.

Ein hr-Element mit page-break-after und display:none, wie in deinem CSS zu sehen, wird auf Grund dieser Regelung aber auf keinen Fall einen Umbruch erzeugen. "display:none" sorgt dafür, dass keine Box entsteht. Falls Du ein Leer-Div mit display:none und page-break-after ins HTML setzen wolltest, um den Umbruch zu erzeugen - nope, keine Box, kein Umbruch. Setz ein &nbsp; hinein und die font-size auf 0, damit es Dir keinen überflüssigen vertikalen Leerraum erzeugt.

Je nach Art des von Dir erzeugten Dokuments solltest Du aber überlegen, ob Du nicht auch ohne Zusatz-DIVs auskommen kannst. Abschnitte auf einer Seite zusammen zu halten sollte auch über page-break-inside:avoid gehen... "Sollte". Das ist alles noch relativ frisch in den Specs, die Browser waren nie als DTP Programm konzipiert und lernen das erst jetzt.

  • The page-break-after property is now a legacy property, replaced by break-after.

Das ist etwas, das Du mitnehmen solltest, was aber dein Problem nicht auslösen sollte.

Ich habe mich bewusst dafür entschieden Bilder statt Quellcode hier ein zu stellen, weil jedes Testen aufgrund des Zusammenhanges mit anderen Seiten dieser Anwendung und Daten, welche erst zu Laufzeit aus der Datenbank geholt werden fehlgeschlagen wäre.

Damit kannst Du erklären, warum Du Auszüge zeigst, aber nicht, warum Du sie als Bilder postest. Warum Bilder schlecht sind, schrieb ich oben.

<div> mit der Klasse Pagebreak existiert. Es wird mit PHP zur Laufzeit reingeladen

Ja. Schön. Und wie soll man das deinen Bildern ansehen?

Wenn meine Hinweise von oben es nicht lösen, und dein Problem innerhalb einer großen Anwendung auftritt, dann löse es bitte heraus. Nimm das HTML, das vom PHP an den Browser gegeben wird und speichere es als eigene Datei, und nimm alles raus, was nicht erforderlich ist, aber so, dass das Problem noch existiert. Und das zeige dann vor. Als geposteten Code, besser noch als Onlinebeispiel.

Anders werden wir Dir wohl nicht helfen können. Wie von Dir und mir gesagt: grundsätzlich geht es mit page-break-after, und wenn es nicht geht, passt irgendwas im Zusammenhang nicht. Den wir aber nicht kennen.

Rolf

--
sumpsi - posui - obstruxi