Выбрать главу

Элемент EMPH - уровня инлайн, и, поскольку его значение для 'unicode-bidi' - 'normal' (начальное значение), он не оказывает воздействия на порядок расположения текста. Элемент HE-QUO, напротив, создаёт внедрение.

Если длина строки достаточно большая, форматирование текста может выглядеть примерно так:

5WERBEH 4WERBEH english3 2WERBEH 1WERBEH 8WERBEH 7WERBEH 6WERBEH english9 english10 english11 13WERBEH 12WERBEH english14 english15 english16 english17 20WERBEH english19 18WERBEH

Заметьте, что внедрение HE-QUO заставляет HEBREW18 находиться справа от english19.

Если строки должны быть разбиты, то выглядеть будет примерно так:

2WERBEH 1WERBEH -EH 4WERBEH english3 5WERB -EH 7WERBEH 6WERBEH 8WERB english9 english10 en- glish11 12WERBEH 13WERBEH english14 english15 english16 english17 18WERBEH 20WERBEH english19

Поскольку HEBREW18 обязан быть прочитан до english19, он находится в строке над english19. Простой разрыв строки из предыдущего форматирования не должен сработать.

Заметьте также, что первый слог из english19 может войти на предыдущую строку, но перенос слов слева-направо в контекст справа-налево и наоборот обычно подавляется, чтобы исключить отображение знака переноса в середине строки.

Лекция 10. Модель визуального форматирования. Детали

Описываются детали модели визуального форматирования.

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

Содержащий блок элемента определяется так:

1Содержащий блок (называемый начальным содержащим блоком), в котором находится корневой элемент, выбирается пользовательским агентом (ПА).

2Для других элементов, если только элемент не позиционирован абсолютно, содержащий блок формируется краем содержимого бокса ближайшего предка уровня блока.

3Если элемент имеет 'position: fixed', то Содержащий блок устанавливается портом просмотра.

4

Если элемент имеет 'position: absolute', то Содержащий блок устанавливается ближайшим предком с 'position', отличным от 'static', следующим образом:

1Если предок - уровня блока, Содержащий блок формируется краем заполнения предка.

2Если предок - инлайн-уровня, Содержащий блок зависит от свойства 'direction' предка:

1Если 'direction' - 'ltr', верхний и левый края содержащего блока являются верхним и левым краями первого бокса, генерируемого предком, а нижний и правый края являются нижним и правым краями содержимого последнего бокса предка.

2Если 'direction' - 'rtl', верхний и правый края содержащего блока являются верхним и правым краями первого бокса, генерируемого предком, а нижний и левый края являются нижним и левым краями содержимого последнего бокса предка.

Если такого предка нет, край содержимого бокса корневого элемента устанавливает Содержащий блок.

Содержащие блоки (СБ) без позиционирования в этом документе:

<HTML> <HEAD> <TITLE>Illustration of containing blocks</TITLE> </HEAD> <BODY id="body"> <DIV id="div1"> <P id="p1">This is text in the first paragraph...</P> <P id="p2">This is text <EM id="em1"> in the <STRONG id="strong1">second</STRONG> paragraph.</EM></P> </DIV> </BODY> </HTML>

устанавливаются так:

Для бокса, генерируемогоСБ устанавливается
bodyначальным СБ (зависит от ПА)
div1body
p1div1
p2div1
em1p2
strong1p2

Если позиция "div1":

#div1 { position: absolute; left: 50px; top: 50px }

то его содержащий блок - уже не <body>; им становится начальный содержащий блок (поскольку отсутствуют другие позиционированные боксы предка).

Также, если позиция "em1":

#div1 { position: absolute; left: 50px; top: 50px } #em1 { position: absolute; left: 100px; top: 100px }

таблица содержащих блоков будет:

Для бокса, генерируемогоСБ устанавливается
bodyначальным СБ
div1начальным СБ
p1div1
p2div1
em1div1
strong1em1

При позиционировании "em1", его содержащим блоком становится ближайший позиционированный бокс предка (т.е. тот, который сгенерирован "div1").

'width'

Значение: <length> | <percentage> | auto | inherit

Начальное: auto

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

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

Процентное: относительно ширины содержащего блока

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

Это свойство специфицирует ширину содержимого боксов, генерируемых элементами уровня блока и замещаемыми элементами.

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

Ширина бокса замещаемого элемента является внутренней и может масштабироваться ПА, если значение этого свойства отличается от 'auto'. Значения имеют следующий смысл:

<length>

Специфицирует фиксированную ширину.

<percentage>

Специфицирует ширину в процентах. Проценты вычисляются относительно ширины содержащего блока генерируемого бокса.

auto

Ширина зависит от значений других свойств. См. следующие разделы.

Отрицательные значения для 'width' не допускаются.

Это правило фиксирует ширину содержимого параграфа в 100 пикселов:

P { width: 100px }

Вычисленные значения свойств 'width', 'margin-left', 'margin-right', 'left' и 'right' для элементов зависят от типа генерируемого бокса и друг от друга. В принципе вычисленные значения - те же, что и специфицированные, с 'auto', замещаемым другим подходящим значением, но есть и исключения. Должны быть рассмотрены следующие варианты: