ИНФОРМАЦИЯ,    ДИЗАЙН,    ПЕРЕВОДЫ,    РЕКЛАМА   .   .   .
w a p - с а й т
Информационный портал
Сегодня:  
admin@aranea.ru
+79068922256

  aranea.ru || Спецификация CSS2 | 13.3. Обрыв страницы.

13.3. Обрыв страницы.

13.3.1. Обрыв перед/после элементов: 'page-break-before', 'page-break-after', 'page-break-inside'.
13.3.2. Использование названных страниц: 'page'.
13.3.3. Обрыв внутри элементов: 'orphans', 'windows'.
13.3.4. Разрешенные обрывы страницы.
13.3.5. Принудительный обрыв страницы.
13.3.6. "Самые лучшие" обрывы страницы.

Следующие разделы объясняют форматирование страниц в CSS2. Пять свойств указывают, где устройство вывода может или ему следует обрывать страницы, и на какой странице (левой или правой) следует возобновить содержание. Каждый обрыв страницы заканчивает разметку в текущем страничном блоке и приводит к тому, что оставшиеся части дерева документа размещаются в новом страничном блоке.

13.3.1. Обрыв перед/после элементов: 'page-break-before', 'page-break-after', 'page-break-inside'.

'page-break-before'
Тип значения:       auto | always | avoid | left | right | inherit
Начальная величина: auto
Применяется:        к блочным элементам 
Наследование:       нет
Процентная база:    нет
Медиа:              визуальные, постраничные

'page-break-after'
Тип значения:       auto | always | avoid | left | right | inherit
Начальная величина: auto
Применяется:        к блочным элементам
Наследование:       нет
Процентная база:    нет
Медиа:              визуальные, постраничные

'page-break-inside'
Тип значения: avoid | auto | inherit
Начальная величина: auto
Применяется: к блочным элементам
Наследование: да
Процентная база: нет
Медиа: визуальные, постраничные

Эти свойства имеют следующие значения:

auto
Не вызывает и не препятствует обрыву страницы перед (после, внутри) сгенерированного блока.
always
Всегда вызывает обрыв страницы перед (после) сгенерированным блоком.
avoid
Избегает обрыв страницы перед (после, внутри) сгенерированным блоком.
left
Устанавливает один или два обрыва страницы перед (после) сгенерированным блоком так, что следующая страница форматируется как левая.
right
Устанавливает один или два обрыва страницы перед (после) сгенерированным блоком так, что следующая страница форматируется как правая.

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

13.3.2. Использование названных страниц: 'page'.

'page'
Тип значения: <identifier> | auto
Начальная величина: auto
Применяется: к блочным элементам
Наследование: да
Процентная база: нет 
Медиа: визуальные, постраничные

Свойство 'page' используется для определения особого типа страницы, где следует вывести элемент.

Следующий пример помещает все таблицы на правой стороне страницы с альбомным (landscape) положением (названной "rotated"):

@page rotated {size: landscape}
TABLE {page: rotated; page-break-before: right}

Свойство 'page' работает следующим образом: если блочный блок с внутристрочным блоком имеет свойство 'page', то он отделяется от предшествующего блочного блока с внутристрочным содержанием, и между ними вставляется один или два обрыва страницы, а блоки после обрыва страницы визуализируются в страничном блоке названного типа. Смотрите ниже раздел " Принудительный обрыв страницы".

В следующем примере две таблицы визуализируются на страницах с альбомным расположением (в действительности, - на одной и той же странице, если они помещаются на нее), и тип страницы "narrow" не используется вообще, не смотря на то, что он установлен в элементе DIV:

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

TABLE {page: rotated}

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

...
...

13.3.3. Обрыв внутри элементов: 'orphans', 'windows'.

'orphans'
Тип значения: <integer> | inherit
Начальная величина: 2
Применяется: к блочным элементам
Наследование: да
Процентная база: нет
Медиа: визуальные, постраничные

'widows'
Тип значения: <integer> | inherit
Начальная величина: 2
Применяется: блочные элементы
Наследование: да
Процентная база: нет
Медиа: визуальные, постраничные

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

Для подробной информации о форматировании параграфов, обратитесь к разделу по строчным блокам.

13.3.4. Разрешенные обрывы страницы.

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

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

Эти обрывы подчиняются следующим правилам:

  • Правило A: Разрыв в точке (1) разрешается, только если свойства 'page-break-after' и 'page-break-before' всех элементов, генерирующих блоки, которые встречаются на данном поле, позволяют это, и который осуществляется, когда, по крайней мере, одно из этих свойств имеет значение 'always', 'left' или 'right', или когда все они имеют значение 'auto'.
  • Правило B: Но, если все они - 'auto', и самый ближайший предок всех элементов имеет значение для свойства 'page-break-inside' - 'avoid', то обрыв страницы в этом месте не разрешается.
  • Правило C: Разрыв в точке (2) разрешается, только если количество строчных блоков между обрывом и началом объемлющего блочного блока равно значению 'orphans' или больше, а количество строчных блоков между обрывом и концом блока равно значению 'widows' или больше.
  • Правило D: Дополнительно, разрыв в точке (2) разрешается, только если свойство 'page-break-inside' - 'auto'.

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

Если это все еще не ведет к достаточным точкам обрыва, то отбрасывают правила А и С для обнаружения еще больших точек обрыва.

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

13.3.5. Принудительный обрыв страницы.

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

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

13.3.6. "Самые лучшие" обрывы страницы.

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

  • Осуществлять обрывы, как можно меньше.
  • Делать все страницы, которые не заканчиваются принудительными обрывами, примерно с одной и той же высотой.
  • Избегать осуществления обрыва внутри блока, который имеет границу.
  • Избегать осуществления обрыва внутри таблицы.
  • Избегать осуществления обрыва внутри плавающего элемента.

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

  • Если параграф в конце текущей страницы содержит 20 строк или меньше, его следует разместить на текущей странице.
  • Если параграф содержит 21 или 22 строки, то вторая часть параграфа не может нарушать ограничение 'widows', так как вторая часть должна содержать точно две строки.
  • Если параграф содержит 23 строки или больше, то первой части следует содержать 20 строк, а второй части – остальные строки.

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

  • Если параграф в конце текущей страницы содержит 8 строк или меньше, то он должен быть размещен на текущей странице.
  • Если параграф содержит 9 строк или больше, то он не может быть разделен (это нарушило бы ограничение orphan), так он должен переместиться, как блок на следующую страницу.
← Назад | Вперед →
Copyright © 2006 -  aranea.ru