Читаем Спецификация CSS2 полностью

@page narrow {size: 9cm 18cm} @page rotated {size: landscape} DIV {page: narrow} TABLE {page: rotated}

с этим документом:

...
...

'orphans'

Значение: | inherit

Начальное: 2

Применяется: к элементам уровня блока

Наследуется: да

Процентное: N/A

Носитель: визуальный, страничный

'widows'

Значение: | inherit

Начальное: 2

Применяется: к элементам уровня блока

Наследуется: да

Процентное: N/A

Носитель: визуальный, страничный

Свойство 'orphans' специфицирует минимальное количество строк параграфа, которые должны оставаться внизу страницы. Свойство 'widows' специфицирует минимальное количество строк параграфа, которые должны оставаться вверху страницы. Примеры того, как они используются для управления разрывами страниц, даны ниже.

Информацию о форматировании параграфов см. в разделе Строчные боксы.

При нормальном обтекании разрывы страниц могут появляться в следующих местах:

1На вертикальном поле между боксами блока. Если разрыв страницы появляется здесь, вычисленные значения соответствующих свойств 'margin-top' и 'margin-bottom' установлены в '0'.

2Между строчными боксами внутри бокса блока.

Эти разрывы являются субъектами для следующих правил:

[x]. Правило A: Разрывы из пункта (1) допускаются, только если свойства 'page-break-after' и 'page-break-before' всех элементов, генерирующих боксы у данного поля, разрешают это, что имеет место, когда по меньшей мере одно из них (свойств) имеет значение 'always', 'left' или 'right', или когда все они - 'auto'.

[x]. Правило B: В то же время, если все они - 'auto' и ближайший общий предок всех элементов имеет значение свойства 'page-break-inside' - 'avoid', тогда разрыв здесь не разрешается.

[x]. Правило C: Разрывы из пункта (2) допускаются, только если количество строчных боксов между разрывом и началом закрывающего бокса блока имеет значение 'orphans' или более, а количество строчных боксов между разрывом и концом бокса имеет значение 'widows' или более.

[x]. Правило D: В дополнение, разрывы (2) допускаются, только если свойство 'page-break-inside' - 'auto'.

Если вышесказанное не обеспечивает достаточное количество точек разрывов для предотвращения выхода содержимого за пределы страничного бокса, тогда правила B и D исключаются для того, чтобы найти дополнительные точки разрывов.

Если это всё ещё не даёт достаточного количества точек разрывов, то правила A и C также исключаются, чтобы найти дополнительные точки разрывов.

Разрывы страниц не могут появляться внутри боксов, позиционированных абсолютно.

Разрыв страницы обязан возникнуть в (1), если среди свойств 'page-break-after' и 'page-break-before' всех элементов, генерирующих боксы у данного поля, имеется по меньшей мере одно со значением 'always', 'left' или 'right'.

Разрыв страницы обязан появиться в (1), если последний строчный бокс выше этого поля и первый бокс - ниже него не имеют одинакового значения для 'page'.

CSS2 не определяет, какой из наборов допустимых разрывов страниц обязан использоваться; CSS2 не запрещает ПАгенту делать разрыв в любой возможной точке разрыва или не делать разрывов вообще. Но CSS2 рекомендует, чтобы ПА следовали следующей эвристике (признавая наличие некоторых противоречий):

[x]. Делать разрывы как можно реже.

[x]. Делать все страницы, не оканчивающиеся форсированным разрывом, одинаковой высоты.

[x]. Исключить разрывы внутри блока, имеющего рамку.

[x]. Исключить разрывы внутри таблицы.

[x]. Исключить разрывы внутри всплывающего элемента.

Предположим, например, что таблица стилей содержит 'orphans : 4', 'widows : 2', и имеется 20 свободных строк (строчных боксов) внизу текущей страницы:

[x]. Если параграф в конце текущей страницы содержит 20 строк или менее, он должен быть размещён на текущей странице.

[x]. Если параграф содержит 21 или 22 строк, вторая часть параграфа обязана не нарушать работы 'widows', и, следовательно, вторая часть обязана содержать точно две строки.

[x]. Если параграф содержит 23 строки или более, первая часть должна содержать 20 строк, а вторая часть - остальные строки.

Теперь предположим, что 'orphans' - '10', 'widows' - '20', и имеется 8 свободных строк внизу текущей страницы:

[x]. Если параграф в конце текущей страницы содержит 8 строк или менее, он должен быть размещён на текущей странице.

[x]. Если параграф содержит 9 строки или более, он не может быть разделён (что могло бы нарушить работу orphans), следовательно, он должен быть перемещён как блок на следующую страницу.

Объявления в контексте страницы подчиняются каскаду так же, как и нормальные объявления CSS2.

@page { margin-left: 3cm; } @page :left { margin-left: 4cm; }

Перейти на страницу:

Похожие книги