CSS position: static — значение свойства

Свойство CSS position


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. Сравним:

Пример

<!DOCTYPE html>
<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для изменения этого порядка:

Пример

<!DOCTYPE html>
<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элементНедопустимо
  • обычно используется для сброса позиционирования или как базовая точка отсчёта для контекста позиционирования.

Свойство CSS position

Другие расширения