Должен ли CSS "сирота" работать на уровне строк или блоков?
Я рендеринг HTML-документов в PDF. Ранее я использовал Wkhtmltopdf, но похоже, что Dompdf предлагает лучшую поддержку разрывов страниц, поэтому я ожидаю, что переключусь на это.
Я хотел бы применить к своему документу какой-то элемент контроля за потерями, поэтому я должен иметь четкое представление о том, что orphans
на самом деле Из W3C ( источник):
Свойство orphans указывает минимальное количество строк в контейнере блоков, которое должно быть оставлено внизу страницы.
Пример, который постоянно предлагается в Интернете:
p { orphans: 3; }
Это означает, что если нет места для трех строк текста абзаца, разрыв переходит на следующую страницу. Я отображаю документ, содержащий много неупорядоченных списков, поэтому для меня это будет:
li { orphans: 2; }
Тем не менее, я также хотел бы разбить неупорядоченный список, чтобы блок элемента маркера не был осиротевшим или овдовевшим сам по себе. Было бы неплохо сделать это:
ul { orphans: 2; }
Это в идеале гарантировало бы, что ни один элементный блок не может появляться выше или ниже разрыва страницы. Однако поддержка браузера / рендерера для этого неоднозначна, и W3C выше использует слово "строка", а не "блок". Таким образом, я полагаю, что вышеизложенное повлияет на управление строкой абзаца в элементах списка и не повлияет на целые блоки элементов списка. Если это так, есть ли способ CSS сделать это?
1 ответ
Как упомянуто liZe на трекере проблем WeasyPrint:
Сироты / Вдовы работают только на линейные блоки, а не на блочные.
К счастью, вы можете определить правила как:
li:last-child { break-before: avoid; } li:first-child { break-after: avoid; }