JavaScript. Подробное руководство, 6-е издание, стр. 233

Другим проектом, касающимся CSS, и о котором должны знать веб-разра-ботчики, является стандарт «CSS Transforms», позволяющий определять двухмерные преобразования (вращение, масштабирование, перемещение, а также их комбинации, определяемые в матричном виде), применяемые к любым элементам. Все текущие броузеры (включая версии IE9 и выше) поддерживают этот проект с добавлением приставок, соответствующих производителям. Более того, в Safari реализована поддержка расширения, позволяющего выполнять трехмерные преобразования, но пока неясно, последуют ли этому другие броузеры.

************************************************

16.2. Наиболее важные CSS-свойства

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

JavaScript. Подробное руководство, 6-е издание - i_027.jpg

16.2.1. Позиционирование элементов с помощью CSS

CSS-свойство

<b>position</b>
задает тип позиционирования, применяемый к элементу. Это свойство может иметь четыре возможных значения:

<b>static</b>

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

<b>top, left</b>
и других. Для позиционирования элемента документа с применением приемов CSS сначала нужно установить его свойство position равным одному из трех других значений.

<b>absolute</b>

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

<b>fixed</b>

Это значение позволяет зафиксировать положение элемента относительно окна броузера. Элементы с фиксированным позиционированием не прокручиваются с остальной частью документа. Как и абсолютно позиционированные, фиксировано позиционированные элементы не зависят от всех остальных элементов и не являются частью потока вывода документа. Фиксированное позиционирование поддерживается большинством современных броузеров, исключая ІЕ6.

<b>relative</b>

Если свойство

<b>position</b>
имеет значение
<b>relative</b>
, элемент располагается в соответствии с нормальным потоком вывода, а затем его положение смещается относительно его обычного положения в потоке. Пространство, выделенное для элемента в нормальном потоке вывода документа, остается выделенным для него, и элементы, расположенные со всех сторон от него, не смыкаются для заполнения этого пространства и не «выталкиваются» с новой позиции элемента.

Присвоив свойству

<b>position</b>
элемента значение, отличное от
<b>static</b>
, можно задать положение элемента с помощью произвольной комбинации свойств
<b>left, top, right</b>
и
<b>bottom</b>
. Чаще всего для позиционирования используются свойства left и
<b>top</b>
, задающие расстояние от левого края элемента-контейнера (обычно самого документа) до левого края позиционируемого элемента и расстояние от верхнего края контейнера до верхнего края элемента. Так, чтобы поместить элемент на расстоянии 100 пикселов от левого края и 100 пикселов от верхнего края документа, можно задать CSS-стили в атрибуте
<b>style</b>
, как показано ниже:

<b>&lt;div style=&quot;position: absolute; left: 100px; top: 100px;&quot;&gt;</b>

Если для элемента задана абсолютная позиция, значения его свойств

<b>top</b>
и
<b>left</b>
интерпретируются как расстояния до ближайшего родительского элемента, свойство
<b>position</b>
которого имеет любое значение, кроме
<b>static</b>
. Если абсолютно позиционируемый элемент не имеет позиционируемого предка, его свойства
<b>top</b>
и
<b>left</b>
будут определять координаты относительно начала документа - левого верхнего его угла. Если вам потребуется позиционировать элемент относительно контейнера, который является частью обычного потока вывода документа, определите в контейнере свойство
<b>position:relative</b>
и укажите значение 0рх в свойствах
<b>top</b>
и
<b>left</b>
контейнера. В этом случае контейнер будет позиционироваться динамически и останется при этом на обычном месте в потоке вывода документа. Любые абсолютно позиционируемые вложенные элементы будут позиционироваться относительно контейнера.

При позиционировании элементов чаще всего задается положение верхнего левого угла элемента с помощью атрибутов

<b>left</b>
и
<b>top</b>
, но точно так же можно задать положение нижнего и правого краев элемента относительно нижнего и правого краев элемента-контейнера с помощью атрибутов
<b>right</b>
и
<b>bottom</b>
. Например, при помощи следующих стилей можно указать, что правый нижний угол элемента должен находиться в правом нижнем углу документа (предполагается, что он не вложен в другой динамический элемент):

<b>position: absolute; right: 0рх; bottom: 0рх;</b>

Чтобы верхний край элемента располагался в 10 пикселах от верхнего края окна, а правый - в 10 пикселах от правого края окна и при этом не прокручивался вместе с документом, можно использовать такие стили:

<b>position: fixed; right: 10рх; top: 10рх;</b>

Помимо позиций элементов CSS позволяет указывать их размеры. Чаще всего это делается путем задания значений свойств стиля

<b>width</b>
и
<b>height</b>
. Например, следующая разметка HTML создаст абсолютно позиционированный элемент без содержимого. Его свойствам
<b>width, height</b>
и
<b>background-color</b>
присвоены такие значения, что он будет отображаться в виде маленького синего квадрата: