position-try-order
Ограниченная доступность
Эта функция не является Baseline, так как она не работает в некоторых из самых широко используемых браузеров.
Экспериментальный: Это экспериментальная технология
Внимательно проверьте таблицу совместимости с браузерами перед использованием в производстве.
Свойство position-try-order CSS позволяет указать различные варианты обратного вызова, которые приводят к использованию доступного обратного вызова position-try для установки позиции элемента с позиционированием по якорю, вместо его начальных настроек позиции.
Примечание: Также существует сокращённое свойство — position-try, которое можно использовать для указания position-try-order и position-try-fallbacks значений в одном объявлении.
Синтаксис
/* Keywords */ position-try-order: normal; position-try-order: most-height; position-try-order: most-width; position-try-order: most-block-size; position-try-order: most-inline-size; /* Global values */ position-try-order: inherit; position-try-order: initial; position-try-order: revert; position-try-order: revert-layer; position-try-order: unset;
Значения
Свойство position-try-order может быть задано либо ключевым значением normal , либо <try-size>.
normal-
Значение по умолчанию. При первом отображении элемента варианты обратного вызова position-try не будут применяться.
<try-size>-
Определяет различные варианты обратного вызова try-size, которые задают критерии, определяющие, какой обратный вызов try должен быть применён к элементу с позиционированием по якорю при его первоначальном отображении. Доступные значения:
most-height-
Вариант обратного вызова position try будет применён, который даёт элементу содержащий блок наибольшую высоту.
most-width-
Вариант обратного вызова position try будет применён, который даёт элементу содержащий блок наибольшую ширину.
most-block-size-
Вариант обратного вызова position try будет применён, который даёт элементу содержащий блок наибольший размер по направлению блока.
most-inline-size-
Вариант обратного вызова position try будет применён, который даёт элементу содержащий блок наибольший размер по направлению строки.
Описание
Свойство position-try-order имеет немного другой фокус, чем остальные функции позиционирования по якорю, поскольку оно использует варианты обратного вызова position-try, когда позиционируемый элемент отображается впервые, а не при прокрутке. Например, вы можете захотеть первоначально отобразить элемент в пространстве, имеющем большую высоту или ширину, чем начальная позиция по умолчанию.
Браузер протестирует доступные варианты обратного вызова position-try, чтобы найти тот, который предоставляет элементу с позиционированием по якорю наибольшее пространство в заданном измерении. Затем он применит этот вариант, заменив исходное форматирование элемента.
Если ни один вариант обратного вызова position try не доступен, который предоставляет большую ширину/высоту, чем начальное позиционирование, назначенное элементу, ни один вариант position try не будет применён. По сути, поведение будет таким, как если бы position-try-order было установлено на normal.
Для получения подробной информации об элементах якоря и использовании вариантов позиционирования по якорю, см. страницу с описанием модуля CSS позиционирования по якорю и руководство Обработка переполнения: варианты обратного вызова try и условное скрытие.
Формальное определение
| Начальное значение | normal |
|---|---|
| Применимо к | элементам с абсолютным позиционированием |
| Унаследован | нет |
| Вычисленное значение | как указано |
| Тип анимации | дискретный |
Формальный синтаксис
Примеры
Базовое использование position-try-order
Эта демонстрация показывает эффект position-try-order.
HTML
HTML включает два <div> элемента, которые будут якорем и элементом с позиционированием по якорю, и <form> содержащий радиокнопки, позволяющие выбрать различные значения position-try-order.
<div class="anchor">⚓︎</div>
<div class="infobox">
<p>This is an information box.</p>
</div>
<form>
<fieldset>
<legend>Choose a try order</legend>
<div>
<label for="radio-normal">normal</label>
<input
type="radio"
id="radio-normal"
name="position-try-order"
value="normal"
checked />
</div>
<div>
<label for="radio-most-height">most-height</label>
<input
type="radio"
id="radio-most-height"
name="position-try-order"
value="most-height" />
</div>
</fieldset>
</form>
CSS
В CSS якорю задаётся anchor-name и большая margin, чтобы расположить его в верхней центральной части области просмотра:
.anchor {
anchor-name: --myAnchor;
margin: 90px auto;
}
Затем мы включаем пользовательский вариант позиционирования под названием --custom-bottom, который располагает элемент под якорем и задаёт соответствующий отступ:
@position-try --custom-bottom {
top: anchor(bottom);
bottom: unset;
margin-top: 10px;
}
Мы первоначально размещаем элемент над якорем, а затем задаём пользовательский вариант позиционирования с использованием сокращённой записи position-try, которая также устанавливает свойство position-try-order в значение normal:
.infobox {
position: fixed;
position-anchor: --myAnchor;
bottom: anchor(top);
margin-bottom: 10px;
justify-self: anchor-center;
position-try: normal --custom-bottom;
}
JavaScript
Наконец, мы включаем JavaScript. Он устанавливает обработчик события change для радиокнопок, чтобы при выборе нового значения это значение применялось к свойству position-try-order инфобокса.
const infobox = document.querySelector(".infobox");
const form = document.forms[0];
const radios = form.elements["position-try-order"];
for (const radio of radios) {
radio.addEventListener("change", setTryOrder);
}
function setTryOrder(e) {
const tryOrder = e.target.value;
infobox.style.positionTryOrder = tryOrder;
}
Результат
Попробуйте выбрать вариант порядка most-height. Это приводит к применению --custom-bottom как варианта обратного вызова position try, который размещает элемент под якорем. Это происходит потому, что вертикального пространства под якорем больше, чем над ним.
Спецификации
Совместимость с браузерами
| Стационарные ПК | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
position-try-order |
125 | 125 | Нет | 111 | Нет | 125 | Нет | 83 | Нет | 27.0 | 125 |
most-block-size |
125 | 125 | Нет | 111 | Нет | 125 | Нет | 83 | Нет | 27.0 | 125 |
most-height |
125 | 125 | Нет | 111 | Нет | 125 | Нет | 83 | Нет | 27.0 | 125 |
most-inline-size |
125 | 125 | Нет | 111 | Нет | 125 | Нет | 83 | Нет | 27.0 | 125 |
most-width |
125 | 125 | Нет | 111 | Нет | 125 | Нет | 83 | Нет | 27.0 | 125 |
normal |
125 | 125 | Нет | 111 | Нет | 125 | Нет | 83 | Нет | 27.0 | 125 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/position-try-order