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

  aranea.ru || Спецификация CSS2 | 9.5. Плавающее перемещение.

9.5. Плавающее перемещение.

9.5.1. Позиционирование плавающего блока: свойство 'float'.
9.5.2. Управление плавающим перемещением следующего блока за перемещающимся: свойство 'clear'.

Плавающее перемещение - блок, который смещается налево или направо в текущей строке. Большинство интересных характеристик плавающего перемещения (или "плавающего блока") состоят в том, что содержание может смещаться вдоль его сторон (или это запрещается свойством 'clear'). Содержание смещается на правую сторону у левостороннего блока и – на левую сторону у правостороннего блока. Следующая информация является введением в позиционирование плавающего смещения и расположение содержания; точные правила, управляющие поведением смещения даны в описании свойства 'float'.

Смещенный плавающий блок должен иметь установленную ширину (присвоенную свойством 'width', или его внутренней шириной в случае замещенных элементов). Любой плавающий блок становится блочным блоком, который смещается налево или направо до тех пор, пока его внешний край не коснется края объемлющего блока или внешнего края другого смещенного плавающего блока. Вершина плавающего блока выравнивается с вершиной блока текущей строки (или низом предыдущего блочного блока, если не существует строчного блока). Если нет достаточного горизонтального пространства в текущей строке для плавающего смещения, то блок смещается под низ, строка за строкой, пока у строки есть пространство.

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

Несколько плавающих блоков могут соседствовать, и эта модель также применяется для смежных плавающих блоков в одной и той же строке.

Следующее правило смещает все блоки IMG с class="icon" налево (и устанавливает левый край равным '0'):

IMG.icon { 
  float: left;
  margin-left: 0;
}

Рассмотрите HTML-источник и стилевую информацию:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
  <HEAD>
    <TITLE>Float example</TITLE>
    <STYLE type="text/css">
      IMG { float: left }
      BODY, P, IMG { margin: 2em }
    </STYLE>
  </HEAD>
  <BODY>
    <P><IMG src=img.gif alt="This image will illustrate floats">
       Some sample text that has no other...
  </BODY>
</HTML>

Блок IMG смещается налево. Содержание, которое следует ниже, форматируется справа от смещения, начиная с то же строки, что и плавающий блок. Строчные блоки справа от плавающего укорачиваются из-за присутствия смещения, но восстанавливают свою "нормальную" ширину (ширину объемлющего блока, учрежденного элементом Р) после смещения. Этот документ мог бы быть отформатирован следующим образом:

[D]

Форматирование было бы точно таким же, если документ был бы:

<BODY>
  <P>Some sample text 
  <IMG src=img.gif alt="This image will illustrate floats">
           that has no other...
</BODY>

так как содержание слева от смещения показывается со смещением и передвижением на правую сторону.

Поля плавающих блоков никогда не сминаются с полями соседних блоков. Таким образом, в предыдущем примере, вертикальные поля не сминаются между блоком Р и смещенным блоком IMG.

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

Ниже приведена другая иллюстрация, показывающая, что происходит, когда смещение накладывается на границы элементов в нормальном расположении:

[D]

Смещающаяся иллюстрация затеняет границы блочных блоков, которые она перекрывает.

Следующий пример иллюстрирует использование свойства 'clear' для предохранения перехода содержания вслед за плавающим смещением.

Допустим следующее правило:

P { clear: left }

форматирование должно выглядеть следующим образом:

[D]

Оба параграфа установлены, как 'clear:left', что приводит к тому, что второй параграф "сдавливается вниз" на позицию ниже смещения – его верхнее поле расширяется в связи с этим (смотрите свойство 'clear').

9.5.1. Позиционирование плавающего блока: свойство 'float'.

'float'
Тип значения:       left | right | none | inherit
Начальная величина: нет
Применяется:        ко всем элементам, кроме 
                    сгенерированных и позиционированных
Наследование:       нет
Процентная база:    нет
Медиа:              визуальные

Это свойство определяет, смещается ли блок влево, вправо или нет. Устанавливается для элементов, которые формируют блоки, не позиционированные абсолютно. Это свойство имеет следующие значения:

left
Элемент генерирует блочный блок, который смещается налево. Содержание перемещается к правой стороне блока, начиная с вершины (подчиняется свойству 'clear' ). Свойство 'display' игнорируется, когда значение - 'none'.
right
То же самое, чти и для 'left', но содержание смещается в левую сторону блока, начиная с верха.
none
Блок не смещается.

Ниже приведены точные правила, которые управляют поведением смещения:

  1. Левый внешний край смещенного влево блока может не являться левым на левом краю своего объемлющего блока. Аналогичное правило применяется для смещенных вправо элементов.
  2. Если текущий блок является смещенным влево, и существует несколько левых блоков, сгенерированных элементами, встречающимися раньше в документе-источнике, тогда для каждого предварительного блока, либо левый внешний край текущего блока должен быть справа в правом внешнем краю предварительного блока, либо его вершина должна быть ниже, чем низ предварительного блока. Аналогичное правило применяется для смещенных вправо блоков.
  3. Правый внешний край смещенного влево блока может не быть справа в левом внешнем краю любого смещенного вправо блока, который находится справа от него. Аналогичное правило применяется для смещенных вправо элементов.
  4. Внешний верхний край плавающего блока не может быть выше, чем вершина его объемлющего блока.
  5. Внешний верхний край плавающего блока не может быть выше, чем внешний верх любого блочного или плавающего блока, сгенерированного элементом, идущим ранее в документе-источнике.
  6. Внешний верхний край плавающего блока элемента не может быть выше, чем вершина любого строчного блока, содержащего блок, сгенерированного элементом, идущим ранее в документе-источнике.
  7. Смещающийся влево блок, который имеет другой смещающийся влево блок к его левому краю, не может иметь свой правый внешний край справа от правого края его объемлющего блока. (Неточно: левый плавающий блок не может быть на правом краю, пока он не находится как можно дальше слева). Аналогичное правило применяется для смещенных вправо элементов.
  8. Плавающий блок должен размещаться так высоко, насколько это возможно.
  9. Смещающийся влево блок должен размещаться так далеко налево, как это возможно, а смещающийся вправо блок - так далеко вправо, как это возможно. Более высокая позиция предпочтительнее, чем та, которая дальше влево или вправо.

9.5.2. Управление плавающим перемещением следующего блока за перемещенным: свойство 'clear'.

'clear' 
Тип значения:       none | left | right | both | inherit
Начальная величина: нет
Применяется:        к элементам блокового уровня
Наследование:       нет
Процентная база:    нет 
Медиа:              визуальные

Это свойство указывает на то, какая сторона блока(блоков) элемента не может быть соседней для предыдущего плавающего блока. (Возможно, что элемент сам имеет плавающих наследников; и свойство 'clear' не имеет влияния на них).

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

Свойство имеет следующие значения, когда применяется для не смещаемых блочных блоков:

left
Верхнее поле сгенерированного блока увеличивается так, что край верхней границы находится ниже нижнего внешнего края смещающихся влево блоков, которые формируются элементами, идущими ранее в документе-источнике.
right
Верхнее поле сгенерированного блока увеличивается так, что край верхней границы находится ниже нижнего внешнего края смещающихся вправо блоков, которые формируются элементами, идущими ранее в документе-источнике.
both
Сформированный блок сдвигается ниже всех плавающих блоков элементов, идущих ранее в документе-источнике.
none
Нет ограничения по положению блока с учетом смещений.

Когда свойство устанавливается для плавающих элементов, то оно формирует модификацию правил для позиционирования плавающего смещения. Добавляется жесткое ограничение (№10):

  • Верхний внешний край плавающего блока должны быть ниже нижнего внешнего края всех предварительных плавающих блоков, смещающихся влево (в случае 'clear: left'), или всех предварительных блоков, смещающихся вправо (в случае 'clear: right'), или обоих ('clear: both').
← Назад | Вперед →
Copyright © 2006 -  aranea.ru