Próbuję zmusić Google Chrome do tworzenia podziałów stron.
Powiedziano mi z wielu stron internetowych, które page-break-after: always;
są poprawne w Chrome, ale nie mogę go uruchomić nawet na bardzo prostym przykładzie. czy istnieje sposób, aby wymusić przerwanie strony podczas drukowania w przeglądarce Chrome?
css
printing
google-chrome
Mike Valstar
źródło
źródło
Odpowiedzi:
Z powodzeniem zastosowałem następujące podejście we wszystkich głównych przeglądarkach, w tym w Chrome:
To jest uproszczony przykład. W rzeczywistym kodzie każdy element div strony zawiera o wiele więcej elementów.
źródło
position: relative
.break-after
ibreak-before
stosuj się tylko doblock-level elements, table row groups, table rows (but see prose)
: drafts.csswg.org/css-break-3/#break-between - oznacza to brak pływaków ani żadnych wymyślnych sztuczek pozycjonujących.Właściwie brakuje jednego szczegółu w odpowiedzi, która została wybrana jako zaakceptowana (od Phila Rossa) ....
to CZY pracę w Chrome, a rozwiązanie jest naprawdę głupi !!
Zarówno element nadrzędny, jak i element, na którym chcesz kontrolować łamanie strony, muszą być zadeklarowane jako:
sprawdź to skrzypce: http://jsfiddle.net/petersphilo/QCvA5/5/show/
Dotyczy to:
Jednak kontrola włamania do strony w Safari nie działa (przynajmniej w 5.1.7)
mam nadzieję, że to pomoże!!!
PS: Poniższe pytanie zwróciło uwagę na fakt, że najnowsze wersje Chrome już tego nie przestrzegają, nawet w przypadku pozycji: względna; sztuczka. Jednak wydają się szanować:
zobacz to skrzypce: http://jsfiddle.net/petersphilo/QCvA5/23/show
więc myślę, że musimy to teraz dodać ...
Mam nadzieję że to pomoże!
źródło
page-break-inside
. Jakaś pomoc?<h7 class="page-breaker" style="display: block;position: relative;page-break-before:always">Grade <?php echo $grade;?></h7>
Chciałem tylko zauważyć, że Chrome ignoruje również ustawienia podziału strony- * css w elementach div, które zostały przeniesione.
Podejrzewam, że gdzieś w specyfikacji css znajduje się uzasadnienie dźwiękowe, ale pomyślałem, że może to kiedyś komuś pomóc ;-)
Jeszcze jedna uwaga: IE7 nie może potwierdzić ustawień podziału strony bez wyraźnej wysokości w poprzednim elemencie bloku:
http://social.msdn.microsoft.com/forums/en-US/iewebdevelopment/thread/fe523ec6-2f01-41df-a31d-9ba93f21787b/
źródło
Miałem podobny problem, ale w końcu znalazłem rozwiązanie. Miałem overflow-x: ukryty; zastosowany do tagu <html>, więc bez względu na to, co zrobiłem poniżej w DOM, nigdy nie pozwoliłoby na podziały stron. Wracając do overflow-x: visible; działało dobrze.
Mam nadzieję, że to komuś pomoże.
źródło
* { overflow-x: visible }
.Sam mam ten problem - moje podziały strony działają w każdej przeglądarce oprócz Chrome - i udało mi się go odizolować do elementu podziału strony znajdującego się w komórce tabeli. (Stare, odziedziczone szablony w CMS.)
Najwyraźniej Chrome nie przestrzega właściwości podziału strony przed ani po podziale strony w komórkach tabeli, więc ta zmodyfikowana wersja przykładu Phila umieszcza drugi i trzeci nagłówek na tej samej stronie:
Implementacja Chrome jest (wątpliwie) dozwolona, biorąc pod uwagę specyfikację CSS - więcej możesz zobaczyć tutaj: http://www.google.com/support/forum/p/Chrome/thread?tid=32f9d9629d6f6789&hl=en
źródło
Uważaj na CSS:
display:inline-block
podczas drukowania.Żadna z właściwości CCS, aby przejść do następnej strony, nie działałaby dla mnie w Chrome i Firefox, gdyby moja tabela znajdowała się wewnątrz elementu div o stylu
display:inline-block
Na przykład nie działa:
Ale następująca praca:
źródło
display: flex
Wcześniej spotkałem się z tym problemem w Chrome, a jego przyczyną jest to, że istniał element div, którego minimalna wysokość została ustawiona na wartość. Rozwiązaniem było zresetowanie minimalnej wysokości podczas drukowania w następujący sposób:
źródło
Aktualizacja 2016:
Cóż, mam ten problem, kiedy miałem
na moim div.
Po tym, jak zrobiłem
wszystko stało się dobrze i idealnie
źródło
Jeśli używasz Chrome z Bootstrap Css, klasy kontrolujące układ siatki, np. Col-xs-12 itp., Używają "float: left", co, jak zauważyli inni, niszczy strony. Usuń je ze swojej strony do drukowania. U mnie to zadziałało. (W wersji Chrome = 49.0.2623.87)
źródło
Mam ten problem. Tak długo minęło ... Bez bocznych pól strony jest to normalne, ale kiedy pojawiają się pola, strona i „odstęp między stronami” będą się skalować. Tak więc w przypadku normalnego pola w dokumencie okazało się, że jest ono nieprawidłowe. Naprawiam to z zestawem
I użyć
Użyj go w pierwszej linii.
źródło
O ile wiem, jedynym sposobem na uzyskanie poprawnych podziałów stron w tabelach z Google Chrome jest nadanie tego elementowi
<tr>
właściwości display: inline-table (lub display: inline-block ale lepiej pasuje w innych przypadkach, które nie są tabelami ). Należy również używać właściwości „page-break-after: always; page-break-inside: unikaj;” napisany przez @Phil Rossźródło
U mnie działało, gdy użyłem wypełnienia, takiego jak:
źródło