Spec-Zone.ru › CSS

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 = 
normal |
<try-size>

<try-size> =
most-width |
most-height |
most-block-size |
most-inline-size

Примеры

Базовое использование 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, который размещает элемент под якорем. Это происходит потому, что вертикального пространства под якорем больше, чем над ним.

Спецификации

Спецификация
CSS позиционирование по якорю
# position-try-order-property

Совместимость с браузерами

Стационарные ПК Мобильные устройства
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

См. также

  • position-try
  • position-try-fallbacks
  • Правило @position-try
  • Модуль позиционирования якорей CSS
  • Руководство по использованию позиционирования якорей CSS
  • Обработка переполнения: обратные варианты и условное скрытие руководство

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API