Расчет позиции элемента
Хотя задать позицию элемента, используя свойства сдвига, – дело простое, все может усложниться в том случае, если расстояния смещения перемешаны с отступами и шириной содержимого элемента и на них действуют ограничения охватывающего блока по ширине. На деле в CSS 2.1 содержится ошеломительно обстоятельный список ограничений и правил урегулирования конфликтов с несовместимыми и неуказанными значениями. Ниже приведен общий прикладной обзор правил, которые должны помочь в большинстве случаев. По правилам если значения несовместимы или не заданы, то, говоря обобщенно, пространство скорее подгоняется справа для языков, где пишут слева направо (и слева – для языков, где пишут справа налево). Проблемы с высотой блока разрешаются подгонкой с нижней стороны элемента. • В том случае, если все значения заданы (т. е. значений auto нет), а сумма не равна ширине охватывающего блока, пользовательский агент должен просто проигнорировать значения сдвига справа (для языков, где пишут слева направо) и снизу, допустив расхождения на соответствующих сторонах. • Если ширина элемента указана, она уже не меняется. Если, напротив, ширина текстового (незамещаемого) объекта равна значению auto, то зона вывода содержимого «подгоняется по размеру» так, чтобы оказаться достаточной для вывода в • Ширина зоны содержимого элемента меняется по размеру только в том случае, если установлена в auto, а все другие свойства при этом имеют конкретно заданные значения. Являясь единственным параметром, равным auto, ширина элемента становится последним вариантом подгонки и соответственно корректируется. • Для выполнения нужных корректировок агенты сначала ищут auto в значениях правого (для языков с письмом слева направо) отступа или сдвига. Для вертикальной подгонки меняются равные auto свойства нижнего края. • Когда значения top и left равны auto, элемент как было сказано выше помещается в «статическую» позицию, которая изменяется лишь в том случае, если все остальные параметры имеют заданные значения, a left (по горизонтали) и top (по вертикали) являются единственными параметрами со значением auto. Во всех других случаях пространство слева и сверху не корректируется. При таком поведении и этих ограничениях простейший и наиболее предсказуемый способ произвести абсолютное позиционирование элемента – указать его ширину, а также сдвиги сверху (top) и слева (left). Тем самым отступы от объекта будут сохранены, а пространство справа и снизу может гибко меняться, чтобы соответствовать параметрам охватывающего блока. Замечание: Приведенные правила исходят из корректности поведения согласно спецификации CSS 2.1 и излагают основы работы браузеров, соответствующих стандарту. Не забывайте, однако, что из-за трудностей в реализации модели прямоугольников в Internet Explorer для Windows (всех версий, кроме режима Standards в IE 6 и 7) используется иной метод расчета положения элементов с учетом заполнения, отступов и границ.
|