Ich versuche, Google Chrome dazu zu bringen, Seitenumbrüche durchzuführen.
Mir wurde über eine Reihe von Websites mitgeteilt, dass diese page-break-after: always;
in Chrome gültig sind, aber ich kann nicht scheinen, sie selbst mit einem sehr einfachen Beispiel zum Laufen zu bringen. Gibt es eine Möglichkeit, einen Seitenumbruch beim Drucken in Chrom zu erzwingen?
css
printing
google-chrome
Mike Valstar
quelle
quelle
Antworten:
Ich habe den folgenden Ansatz in allen gängigen Browsern einschließlich Chrome erfolgreich angewendet:
Dies ist ein vereinfachtes Beispiel. Im realen Code enthält jede Seite div viel mehr Elemente.
quelle
position: relative
.break-after
undbreak-before
nur anwendbar aufblock-level elements, table row groups, table rows (but see prose)
: Drafts.csswg.org/css-break-3/#break-between - das bedeutet, dass es keine Floats oder ausgefallenen Positionierungstricks gibt.Tatsächlich fehlt ein Detail in der Antwort, die als akzeptiert ausgewählt wurde (von Phil Ross) ....
es TUT Arbeit in Chrome, und die Lösung ist wirklich dumm !!
Sowohl das übergeordnete Element als auch das Element, für das Sie den Seitenumbruch steuern möchten, müssen wie folgt deklariert werden:
Schauen Sie sich diese Geige an: http://jsfiddle.net/petersphilo/QCvA5/5/show/
Dies gilt für:
Die Steuerung des Seitenumbruchs in Safari funktioniert jedoch nicht (zumindest in 5.1.7).
ich hoffe das hilft!!!
PS: Die folgende Frage hat die Tatsache aufgeworfen, dass neuere Versionen von Chrome dies nicht mehr respektieren, selbst mit der Position: relativ; Trick. Sie scheinen jedoch zu respektieren:
siehe diese Geige: http://jsfiddle.net/petersphilo/QCvA5/23/show
Also müssen wir das jetzt wohl hinzufügen ...
Hoffe das hilft!
quelle
page-break-inside
. Irgendeine Hilfe?<h7 class="page-breaker" style="display: block;position: relative;page-break-before:always">Grade <?php echo $grade;?></h7>
Ich wollte hier nur erwähnen, dass Chrome auch Seitenumbruch- * CSS-Einstellungen in schwebenden Divs ignoriert.
Ich vermute, dass es irgendwo in der CSS-Spezifikation eine vernünftige Rechtfertigung dafür gibt, aber ich dachte mir, dass es eines Tages jemandem helfen könnte ;-)
Nur ein weiterer Hinweis: IE7 kann keine Einstellungen für Seitenumbrüche ohne explizite Höhe des vorherigen Blockelements bestätigen:
http://social.msdn.microsoft.com/forums/en-US/iewebdevelopment/thread/fe523ec6-2f01-41df-a31d-9ba93f21787b/
quelle
Ich hatte ein ähnliches Problem, fand aber schließlich die Lösung. Ich hatte Überlauf-x: versteckt; Wird auf das <html> -Tag angewendet. Unabhängig davon, was ich unten im DOM getan habe, werden niemals Seitenumbrüche zugelassen. Durch Zurücksetzen auf Überlauf-x: sichtbar; es hat gut funktioniert.
Hoffentlich hilft das jemandem da draußen.
quelle
* { overflow-x: visible }
.Ich habe dieses Problem selbst - meine Seitenumbrüche funktionieren in jedem Browser außer Chrome - und konnte es auf das Seitenumbruchelement in einer Tabellenzelle beschränken. (Alte, geerbte Vorlagen im CMS.)
Anscheinend berücksichtigt Chrome die Eigenschaften "Seitenumbruch vor" oder "Seitenumbruch nach" in Tabellenzellen nicht. In dieser modifizierten Version von Phils Beispiel werden die zweite und dritte Überschrift auf dieselbe Seite gesetzt:
Die Implementierung von Chrome ist (zweifelhaft) aufgrund der CSS-Spezifikation zulässig. Weitere Informationen finden Sie hier: http://www.google.com/support/forum/p/Chrome/thread?tid=32f9d9629d6f6789&hl=de
quelle
Vorsicht vor CSS:
display:inline-block
beim Drucken.Keine der CCS-Eigenschaften, um zur nächsten Seite zu gelangen, würde in Chrome und Firefox für mich funktionieren, wenn sich meine Tabelle in einem Div mit dem Stil befindet
display:inline-block
Zum Beispiel funktioniert Folgendes nicht:
Aber die folgende Arbeit:
quelle
display: flex
Ich habe dieses Problem schon einmal auf Chrom gesehen und die Ursache dafür ist, dass ein Div die minimale Höhe auf einen Wert gesetzt hat. Die Lösung bestand darin, die Mindesthöhe während des Druckens wie folgt zurückzusetzen:
quelle
Update 2016:
Nun, ich hatte dieses Problem, als ich es hatte
auf meinem div.
Nachdem ich gemacht habe
alles wurde gut und perfekt
quelle
Wenn Sie Chrome mit Bootstrap Css verwenden, verwenden die Klassen, die das Rasterlayout steuern, z. B. col-xs-12 usw., "float: left", was, wie andere bereits betont haben, die Seitenumbrüche zerstört. Entfernen Sie diese zum Drucken von Ihrer Seite. Es hat bei mir funktioniert. (In Chrome Version = 49.0.2623.87)
quelle
Habe dieses Problem. So lange Zeit vergeht ... Ohne Seitenfelder der Seite ist es normal, aber wenn Felder angezeigt werden, werden Seite und "Seitenumbruch" skaliert. Bei einem normalen Feld in einem Dokument wurde es also falsch angezeigt. Ich repariere es mit Set
und verwenden
Verwenden Sie es in der ersten Zeile.
quelle
Soweit ich weiß, besteht die einzige Möglichkeit, mit Google Chrome die richtigen Seitenumbrüche in Tabellen zu erzielen, darin, dem Element
<tr>
die Eigenschaft display: inline-table (oder display: inline-block) zuzuweisen. In anderen Fällen, die keine Tabellen sind, passt es jedoch besser ). Außerdem sollten die Eigenschaften "Seitenumbruch nach: immer; Seitenumbruch nach innen: vermeiden;" verwendet werden. wie von @Phil Ross geschriebenquelle
Es hat bei mir funktioniert, als ich Polster verwendet habe wie:
quelle