Плавающие элементы
Используя свойство элемента "плавающий" ('float'), можно декларировать его в качестве внешнего по отношению к нормальному потоку элементов, а затем форматировать, как блочный элемент. Например, при установке значения 'left' для свойства "плавающий" применительно к изображению, последнее перемещается влево до границы отступа или рамки, либо достигает другого блочного элемента. Нормальный поток будет переноситься по правой стороне. Границы, рамки и отступы самого элемента будут учитываться, и никогда не будут сливаться с границами смежных элементов.
При позиционировании плавающего элемента должны выполняться следующие условия (см. раздел 4.1. для разъяснения терминов):
1. Левая внешняя граница левоориентированного плавающего элемента не может быть слева от левой внутренней границы родительского элемента. Аналогично для правоориентированных плавающих элементов.
2. Правая внешняя граница левоориентированного плавающего элемента должна быть справа от правой внутренней границы любого предшествующего (согласно исходному тексту HTML) левоориентированного элемента, или же вершина предшествующего элемента должна быть ниже чем низ последующего. Аналогично для правоориентированных плавающих элементов.
3. Правая внешняя граница левоориентированного плавающего элемента не может быть справа от левой внешней границы правоориентированного плавающего элемента, расположенного правее его. Аналогично для правоориентированных плавающих элементов.
4. Вершина плавающего элемента не может быть выше потолка родительского элемента.
5. Вершина плавающего элемента не может быть выше вершины любого из предшествующих плавающих или блочных элементов.
6. Вершина плавающего элемента не может быть выше вершины строчного поля (см. раздел 4.4) с содержанием, предшествующим описанию плавающего элемента в исходном тексте HTML.
7. Плавающий элемент должен расположиться как можно выше.
8. Левоориентированный плавающий элемент должен расположиться как можно левее, правоориентированный - как можно правее. Приоритетно крайнее положение устанавливается для более левого или правого элемента.
<STYLE TYPE="text/css"> IMG { float: left } BODY, P, IMG { margin: 2em } </STYLE>
<BODY> <P> <IMG SRC=img.gif> Примерный текст, чтобы показать... </BODY>
Форматирование в приведенном примере будет выглядеть так:
________________________________________ | | max(граница BODY, граница P) | ______________________________ | | | Примерный текст, | г | г |границы IMG чтобы показать, как | р | р | _____ плавающие элементы | а | а | | | смещаются относительно | н | н | | IMG | к сторонам родительского | и | и | | | элемента, несмотря | ц | ц | |_____| на приоритет | a | а | границы, бордюра | | | и заполнения. | B | P | Обратите внимание, | O | |как смежные вертикальные границы | D | |сжимаются между фиксированными | Y | |блочными элементами.
Обратите внимание, как границы элемента 'P' окружают плавающий элемент 'IMG'.
Есть два случая, когда плавающие элементы могут перекрывать области границы, рамки и отступа других элементов:
- когда плавающий элемент имеет отрицательную величину границы: отрицательные границы плавающих элементов имеют приоритет над иными блочными элементами;
- когда плавающий элемент выше или шире чем элемент внутри.