Должен ли 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;
}
Другие вопросы по тегам