Стилі друку: Як забезпечити, щоб зображення не охоплювало розрив сторінки


95

Чи є спосіб писати таблицю стилів друку, щоб зображення завжди було лише на одній сторінці, а не охоплювало кілька сторінок. Зображення набагато менші, ніж сторінки, але, виходячи з потоку документів, вони опиняються внизу сторінки та діляться. Приклад поведінки, яку я бачу, наведений нижче:

Page 1 |                    |
       |  (text text text)  |
       |  (text text text)  |
       |  ________________  |
       | | Top of image   | |
       |____________________|
       ------page break------
        ____________________
Page 2 | | Rest of image  | |
       | |________________| |
       |         …          |

Що б я хотів

Page 1 |                    |
       |  (text text text)  |
       |  (text text text)  |
       |                    |
       |                    |
       |____________________|
       ------page break------
        ____________________
Page 2 |  ________________  |
       | | Full image     | |
       | |                | |
       | |________________| |
       |         …          |

Усі ті часи я скаржився на поплавки в LaTeX, і тут я прошу ту саму функціональність ... Чи можна це зробити? Мене не обов’язково турбує, що це працює у всіх браузерах, оскільки це часто просто разовий документ, який я пишу, щоб перетворити його на PDF.


45
Прихильник за широке використання художніх схем ASCII :)
NickG

@NickG Дуже погодився, справді чудова схема ASCII!

Відповіді:


66

Єдиний засіб, який я можу придумати, - це використовувати одне (або потенційно більше) з наступних правил css:

img {
    page-break-before: auto; /* 'always,' 'avoid,' 'left,' 'inherit,' or 'right' */
    page-break-after: auto; /* 'always,' 'avoid,' 'left,' 'inherit,' or 'right' */
    page-break-inside: avoid; /* or 'auto' */
}

Я наполовину згадую, що ці оголошення застосовуються лише до елементів рівня блоку (тому вам також доведеться визначити display: block;на своєму зображенні або використовувати якийсь контейнер для обтікання та застосувати до цього правила (будь то в абзаці, div, span , список тощо ...).

Деякі корисні обговорення тут: " Які найбільш корисні media="print"властивості CSS, сумісні з браузерами, властивості CSS? "

Список літератури:


3
Так, це працює. ( page-break-inside:avoid). Тепер я нагадав, чому поплавки LaTeX - це біль.
davidtbernal

2
@notJim тільки плаває?
Mindwin

Пояснення цілком логічне, але з якихось причин воно не працює для мого файлу HTML5 з Firefox 54. Можливо, просто помилка, оскільки воно працює з Internet Explorer 11 ...
Wolf

розбиття сторінки - CSS | MDN - це сторінка, присвячена цій ваді;)
Вольф

@Wolf Чи змінилася ця сторінка? Або мені чогось не вистачає? Чому це не працює в HTML5 з FF54?
The Oddler
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.