CSS position: static — значение свойства
position: staticявляется значением по умолчанию свойства позиционирования CSS.
Когда у элементаpositionзначение установлено вstaticкогда элемент будет следоватьНормальному потокудокумента, то он располагается,не подвержен влиянию top、right、bottom、leftиz-indexвлиянию таких свойств позиционирования, как.
Другими словами,staticозначает, что специальное позиционирование не применяется; элемент просто остаётся там, где он естественно располагается.
Определения слов:staticИз латыниstaticus, означающее «неподвижный, неперемещающийся», указывает на то, что элемент остаётся в исходном положении.
Базовый синтаксис
position: staticявляется самым простым и основным значением свойства позиционирования CSS.
/* 语法 */
position: static;
/* 实际示例 */
.box {
position: static;
}
Описание свойства
| Значение свойства | Описание |
|---|---|
static |
Значение по умолчанию; элементы позиционируются в соответствии с нормальным потоком документа, и на них не влияют свойства позиционирования. |
Влияние связанных свойств позиционирования на static
| Свойство | Влияние на static-элементы |
|---|---|
top |
Недопустимо, не даёт эффекта позиционирования |
right |
Недопустимо, не даёт эффекта позиционирования |
bottom |
Недопустимо, не даёт эффекта позиционирования |
left |
Недопустимо, не даёт эффекта позиционирования |
z-index |
Недопустимо, нельзя вручную задать порядок наложения |
Пример
Разберёмся на примерахposition: staticПоведение.
Пример 1: static — способ позиционирования по умолчанию.
Даже если явно не заданоposition: static, элементы по умолчанию позиционируются как static. Сравним:
Пример
<html>
<head>
<style>
/* Стили контейнера: задайте background и padding для наглядности */
.container {
padding: 20px;
background-color: #f5f5f5;
border: 2px solid #ddd;
}
/* Три блока div, по умолчанию — позиционирование static */
.box {
padding: 15px;
margin: 10px 0;
background-color: #3498db;
color: white;
border-radius: 4px;
}
/* Второй блок пытается позиционироваться с помощью свойства top (недопустимо для static) */
.box-2 {
position: static; /* Явное объявление также является static */
top: 100px; /* Это свойство не будет иметь никакого эффекта */
}
</style>
</head>
<body>
<div class="container">
<div class="box">Первый блок (по умолчанию static)</div>
<div class="box box-2">Второй блок (явный static + top:100px)</div>
<div class="box">Третий блок (по умолчанию static)</div>
</div>
</body>
</html>
Описание эффекта:
Из-за этого вы увидите, что второй блок неtop: 100pxперемещается вниз. Это потому, чтоstaticпозиционированные элементы полностью игнорируютtop、right、bottom、leftэти свойства позиционирования.
Пример 2: для static-элементов нельзя задать z-index
В нормальном потоке документа порядок наложения элементов определяется порядком их появления в HTML. Мы не можем использоватьz-indexдля изменения этого порядка:
Пример
<html>
<head>
<style>
.container {
position: relative; /* родительский контейнер задан как relative в качестве точки отсчёта */
height: 150px;
background-color: #f0f0f0;
}
.box {
width: 100px;
height: 100px;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-weight: bold;
}
/* три блока идут последовательно */
.box-1 {
background-color: #e74c3c; /* красный */
position: static; /* позиционирование по умолчанию */
z-index: 999; /* недействительно! */
}
.box-2 {
background-color: #2E7DCC; /* зелёный */
position: static;
margin-top: -30px; /* создать перекрытие с помощью отрицательного margin */
margin-left: 60px;
}
.box-3 {
background-color: #9b59b6; /* фиолетовый */
position: static;
margin-top: -30px;
margin-left: 120px;
}
</style>
</head>
<body>
<div class="container">
<div class="box box-1">Блок 1 (z-index:999)</div>
<div class="box box-2">Блок 2</div>
<div class="box box-3">Блок 3</div>
</div>
<p>Даже если для Блока 1 задан z-index: 999, поскольку он статически позиционирован, z-index не оказывает эффекта.</p>
<p>Итоговый порядок наложения всё ещё таков: более поздние элементы находятся сверху (Блок 3 — самый верхний, Блок 1 — самый нижний).</p>
</body>
</html>
Сценарий использования
Хотяposition: staticКажется, что оно «ничего не делает», но оно полезно в следующих сценариях:
Сценарий 1: Сброс позиционирования
Когда нужно отменить ранее заданный эффект позиционирования, можно задатьpositionВернуть обратноstatic:
/* 之前可能是 relative、absolute или fixed */
.sidebar {
position: fixed;
top: 0;
}
/* 现在需要取消固定定位,恢复正常布局 */
.sidebar {
position: static; /* 移除固定定位效果 */
}
Сценарий 2: В качестве ориентира для позиционированных дочерних элементов.
Хотяstaticсам он не позиционирован, но может служитьконтекстом позиционированиядля «ориентира»:
/* 父元素设置为 relative,虽然它自己可能是 static */
.parent {
position: relative; /* 创建新的定位上下文 */
}
/* 子元素 absolute 会相对于这个 parent 定位 */
.child {
position: absolute;
top: 10px;
left: 10px;
}
Сценарий 3: Отладка и тестирование
Во время разработки, если вы не уверены, почему элемент позиционирован, можно сначала вернуть его обратно кstaticчтобы устранить неполадки:
.debug-element {
position: static; /* 临时设为 static 看原始位置 */
}
Примечания
Распространённые заблуждения:Многие новички пытаются использовать
top: 0、left: 0подобные свойства, чтобы «сбросить» элемент в верхний левый угол, но эти свойства не влияют наstaticэлементы вообще. Если вам нужен такой эффект, следует использоватьrelative、absoluteилиfixedпозиционирование.
Сравнение с другими значениями позиционирования
| значение position | Выведен ли он из потока документа | Влияют ли на него top/right/bottom/left | Поддерживает z-index |
|---|---|---|---|
static |
Нет, сохраняет нормальный поток | нет | нет |
relative |
Нет, но его можно смещать | Да, смещается относительно исходного положения | Да |
absolute |
Да, вне потока документа | Да, относительно ближайшего позиционированного предка | Да |
fixed |
Да, вне потока документа | Да, позиционируется относительно окна просмотра | Да |
sticky |
Да, фиксируется после прокрутки до порогового значения | Да, задаёт пороговое положение | Да |
Итог
position: staticявляется основой позиционирования в CSS; понимание его поведения крайне важно для освоения других методов позиционирования.
Запомните следующие ключевые моменты:
staticДаpositionЗначение свойства по умолчаниюstaticЭлементы располагаются в соответствии с обычным потоком документаtop、right、bottom、leftпара свойствstaticэлементНедопустимоz-indexпара свойствstaticэлементНедопустимо- обычно используется для сброса позиционирования или как базовая точка отсчёта для контекста позиционирования.
Другие расширения