При печати из Chrome я бы хотел избежать разрыва страницы между заголовком и следующим абзацем.
Я достиг этого для большинства документов с:
h1 {
page-break-inside: avoid;
page-break-after: avoid;
}
... и это перемещает кучу разрывов страниц, заставляя разрыв произойти перед заголовком, когда это необходимо.
Однако, похоже, что это не работает, когда разрыв происходит в пределах поля заголовка.
Я могу воспроизвести так:
<html>
<head>
<style>
h1 {
border-style: solid;
margin: 30px;
page-break-inside: avoid;
page-break-after: avoid;
}
p {
background-color: grey;
}
</style>
</head>
<body>
<h1>Lorem ipsum dolor sit amet</h1>
<p>... consectetur adipiscing elit (etc)...</p>
(Repeat to fill a page)
</html>
... сокращать / удлинять текст абзаца, пока print-preview не покажет нежелательный разрыв страницы:
![screenshot of unwanted page break](https://i.stack.imgur.com/0aHSH.png)
Спецификация CSS говорит, что этого не должно происходить:
В обычном режиме разрывы страниц могут происходить в следующих местах:
1) В вертикальном поле между блоками уровня блока. Когда не принужден
здесь происходит разрыв страницы, используются значения соответствующих 'margin-top'
и свойства 'margin-bottom' установлены в '0'. Когда принудительная страница
Здесь происходит перерыв, используется значение соответствующего 'margin-bottom'
свойство установлено в '0'; соответствующее используемое значение 'margin-top' может
либо устанавливается на «0», либо сохраняется.
...
- Правило A: Разрыв в (1) разрешен только в том случае, если «разрыв страницы» и
свойства page-break-before всех элементов, генерирующих блоки
что встречаются на этом поле позволяют это, когда хотя бы один из них
имеет значение «всегда», «влево» или «вправо», или когда все они
'Авто'.
Это работает как надо? Или ошибка в CSS Chrome? Или недоразумение с моей стороны?
Можно ли как-то обойти это?