Кратко
СкопированоСвойство position определяет порядок применения возможных вариантов расположения таргет элемента.
Пример
Скопировано
.target { position-try-order: normal;}
.target {
position-try-order: normal;
}
Как пишется
СкопированоСвойство position имеет несколько значений:
normal– фолбэки будут пробовать примениться в том порядке, в котором они указаны внутри свойстваposition. Значение по умолчанию;- try - fallbacks most– фолбэки начнут применяться, начиная с самого широкого (самой широкой ячейки);- width most– фолбэки начнут применяться, начиная с самого высокого (самой высокой ячейки).- height
Также для most и most существуют логические эквиваленты most и most.
Как понять
СкопированоПредставим, что мы c помощью свойства position разместили таргет элемент сверху по центру относительно якоря, а также задали несколько альтернативных вариантов расположения с помощью свойства position.
.target { position-area: top center; position-try-fallbacks: --left, --bottom, --right;}@position-try --left { position-area: left center;}@position-try --bottom { position-area: bottom center;}@position-try --right { position-area: right center;}
.target {
position-area: top center;
position-try-fallbacks: --left, --bottom, --right;
}
@position-try --left {
position-area: left center;
}
@position-try --bottom {
position-area: bottom center;
}
@position-try --right {
position-area: right center;
}
Если с помощью белых линий визуально отобразим границы каждой из ячеек возможных для расположения, то у нас получится картинка ниже.

Кстати, не пугайтесь того, что здесь ячейки не пропорциональны друг другу. Просто якорный элемент смещён к левой стороне вьюпорта относительно центра, поэтому и пропорции ячеек тоже изменились.
Сейчас таргет элемент целиком помещается в своей дефолтной ячейке для расположения (top center). Но если пользователь начнёт скроллить экран, то может случиться ситуация, при которой таргет элемент перестанет помещаться в верхней центральной ячейке.

В этот момент браузер должен начать применять фолбэки для расположения. Но как он определяет, какой фолбэк применить первым?
Чтобы помочь браузеру решить эту задачу было придумано свойство position, с помощью которого мы можем указать порядок применения альтернативных вариантов расположения.
Рассмотрим более подробно, как это всё работает.
normal
Скопировано
.target { position-area: top center; position-try-fallbacks: --left, --bottom, --right; position-try-order: normal;}@position-try --left { position-area: left center;}@position-try --bottom { position-area: bottom center;}@position-try --right { position-area: right center;}
.target {
position-area: top center;
position-try-fallbacks: --left, --bottom, --right;
position-try-order: normal;
}
@position-try --left {
position-area: left center;
}
@position-try --bottom {
position-area: bottom center;
}
@position-try --right {
position-area: right center;
}
Если используется значение normal, браузер будет пробовать применить фолбэки в том порядке, в котором они указаны внутри свойства [position]. В нашем случае браузер сперва попробует применить -, затем - и в конце - фолбэки.

most-width
Скопировано
.target { position-area: top center; position-try-fallbacks: --left, --bottom, --right; position-try-order: most-width;}@position-try --left { position-area: left center;}@position-try --bottom { position-area: bottom center;}@position-try --right { position-area: right center;}
.target {
position-area: top center;
position-try-fallbacks: --left, --bottom, --right;
position-try-order: most-width;
}
@position-try --left {
position-area: left center;
}
@position-try --bottom {
position-area: bottom center;
}
@position-try --right {
position-area: right center;
}
Если используется значение most, браузер будет пробовать применить фолбэки, начиная с самого широкого. В нашем случае браузер сперва попробует применить - фолбэк, потому что у этой ячейки самая большая ширина.

most-height
Скопировано
.target { position-area: top center; position-try-fallbacks: --left, --bottom, --right; position-try-order: most-height;}@position-try --left { position-area: left center;}@position-try --bottom { position-area: bottom center;}@position-try --right { position-area: right center;}
.target {
position-area: top center;
position-try-fallbacks: --left, --bottom, --right;
position-try-order: most-height;
}
@position-try --left {
position-area: left center;
}
@position-try --bottom {
position-area: bottom center;
}
@position-try --right {
position-area: right center;
}
Если используется значение most, браузер будет пробовать применить фолбэки, начиная с самого высокого. В нашем случае браузер сперва попробует применить - фолбэк, потому что у этой ячейки самая большая высота.

Интерактивная демка
Скопировано
.target { position-area: top center; position-try-fallbacks: --left, --bottom, --right;}@position-try --left { position-area: left center;}@position-try --bottom { position-area: bottom center;}@position-try --right { position-area: right center;}
.target {
position-area: top center;
position-try-fallbacks: --left, --bottom, --right;
}
@position-try --left {
position-area: left center;
}
@position-try --bottom {
position-area: bottom center;
}
@position-try --right {
position-area: right center;
}
Закрепим разобранные примеры с помощью интерактивной демки. Попробуйте перетащить якорный элемент к верху вьюпорта – в зависимости от выбранного значения position он будет пытаться переместиться влево, вниз или вправо.
- Chrome 125, поддерживается
- Edge 125, поддерживается
- Firefox, не поддерживается
- Safari, не поддерживается