anchor-size()
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает во всех широко используемых браузерах.
Экспериментальная функция: Это экспериментальная технология.
Перед использованием в рабочей среде внимательно изучите таблицу совместимости браузеров.
Функция CSS CSS function позволяет задавать размеры элементов, позиционируемых относительно якорей, относительно размеров элементов-якорей. Она возвращает значение <length> заданной стороны целевого элемента-якоря. anchor-size() допустимо только в значениях свойств размера элементов, позиционируемых относительно якорей.
Для получения подробной информации об элементах-якорях и их использовании см. страницу модуля позиционирования CSS относительно якорей и руководство по применению.
Синтаксис
/* size of anchor side */ width: anchor-size(width); block-size: anchor-size(block); height: calc(anchor-size(self-inline) + 2em); /* size of named anchor side */ width: anchor-size(--myAnchor width); block-size: anchor-size(--myAnchor block); /* size of named anchor side with fallback */ width: anchor-size(--myAnchor width, 50%); block-size: anchor-size(--myAnchor block, 200px);
Параметры
Синтаксис функции anchor-size():
anchor-size(<anchor-name> <anchor-size>, <length-percentage>)
Параметры:
-
<anchor-name>Необязательно -
Значение свойства
anchor-nameэлемента-якоря, относительно которого необходимо определить размер элемента. Это<dashed-ident>значение. Если опущено, используется значение по умолчанию для элемента.Примечание: Указание
<anchor-name>внутри функцииanchor-size()не связывает и не привязывает элемент к якорю; оно только определяет размер элемента относительно этого якоря. -
<anchor-size>Необязательно -
Определяет размер элемента-якоря, относительно которого будет определяться размер позиционируемого элемента. Допустимые значения:
width-
Ширина элемента-якоря.
height-
Высота элемента-якоря.
block-
Длина содержащего блока элемента-якоря в направлении блока.
inline-
Длина содержащего блока элемента-якоря в направлении строки.
self-block-
Длина элемента-якоря в направлении блока.
self-inline-
Длина элемента-якоря в направлении строки.
Примечание: Если этот параметр опущен, размер по умолчанию соответствует ключевому термину
<anchor-size>, который соответствует оси свойства, в котором используется функция. Например,width: anchor-size();эквивалентноwidth: anchor-size(width);. -
<length-percentage>Необязательно -
Определяет размер, используемый в качестве значения по умолчанию, если элемент не позиционируется относительно абсолютного или фиксированного положения или элемент-якорь отсутствует. Если этот параметр опущен в случае, когда значение по умолчанию должно быть использовано, объявление будет некорректным.
Примечание: Размер элемента-якоря, относительно которого определяется размер позиционируемого элемента, не обязательно должен находиться на той же оси, что и значение размера. Например, width: anchor-size(height) допустимо.
Значение возвращаемого значения
Возвращает значение <length>.
Описание
Функция anchor-size() позволяет выражать значения размеров позиционированного элемента через размеры элемента-якоря; она возвращает значение <length>, представляющее размер конкретного элемента-якоря, относительно которого определяется размер позиционируемого элемента. Это допустимое значение для свойств размера, заданных для элементов, позиционируемых относительно якорей.
Возвращаемая длина — это вертикальный или горизонтальный размер элемента-якоря или его содержащего блока. Размер определяется параметром <anchor-size>. Если этот параметр опущен, используемый размер будет соответствовать оси свойства размера, на котором он задан.
Элемент-якорь, используемый в качестве основы для длины размера, — это элемент со значением anchor-name , указанным в параметре <anchor-name>. Если более одного элемента имеет то же имя якоря, используется последний элемент с этим именем якоря в порядке DOM.
Если в вызове функции не указан параметр <anchor-name>, используется якорь по умолчанию элемента, указанный в свойстве position-anchor или связанный с элементом через атрибут HTML anchor.
Если указан параметр <anchor-name> и нет элементов, соответствующих этому имени якоря, используется значение по умолчанию. Если значение по умолчанию не указано, объявление игнорируется. Например, если для позиционируемого элемента был указан width: anchor-size(--foo width, 50px); height: anchor-size(--foo width);, но в DOM нет якоря с именем --foo, значение по умолчанию будет 50px, а объявление height не будет иметь эффекта.
Если у элемента есть свойства размера со значениями anchor-size() , но это не элемент, позиционируемый относительно якоря (у него свойство position не установлено в значение absolute или fixed или нет якоря, связанного с ним через свойство position-anchor ), значение по умолчанию будет использоваться, если оно доступно. Если значение по умолчанию недоступно, объявление игнорируется.
Например, если для позиционируемого элемента был указан width: anchor-size(width, 50px); , но нет ассоциированного якоря, будет использовано значение по умолчанию, поэтому width получит вычисленное значение 50px.
Для получения подробной информации об элементах-якорях и их использовании см. страницу модуля позиционирования CSS относительно якорей и руководство по применению.
Свойства, принимающие значения функции anchor-size()
Свойства размера, принимающие функцию anchor-size() в качестве значения:
Использование anchor-size() внутри calc()
Чаще всего функции anchor-size() будут ссылаться на размер якоря по умолчанию. Альтернативно, включите функцию anchor-size() внутри функции calc() для изменения размера, применяемого к позиционируемому элементу.
Например, данное правило задаёт ширину позиционируемого элемента, равную ширине элемента-якоря по умолчанию:
.positionedElem {
width: anchor-size(width);
}
Данное правило задаёт размер в направлении строки позиционируемого элемента, равный в 4 раза большему размеру в направлении строки элемента-якоря, причём умножение выполняется внутри функции calc():
.positionedElem {
inline-size: calc(anchor-size(self-inline) * 4);
}
Формальный синтаксис
Примеры
Базовое использование anchor-size()
Этот пример демонстрирует два элемента, размещенных относительно якоря и имеющих размеры, заданные с помощью функций anchor-size().
HTML
Мы определяем три <div> элемента, один anchor элемент и два infobox элемента, которые мы разместим относительно якоря. Мы также включили заполняющий текст, чтобы высота <body> была достаточной для прокрутки, но для краткости он скрыт.
<div class="anchor">⚓︎</div> <div class="infobox" id="infobox1"> <p>This is the first infobox.</p> </div> <div class="infobox" id="infobox2"> <p>This is the second infobox.</p> </div>
CSS
Мы объявляем anchor <div> как элемент якоря, присвоив ему anchor-name. Размещенные элементы, у которых свойства position установлены в fixed, связаны с элементом якоря через их свойства position-anchor. Мы также устанавливаем абсолютные размеры height и width для якоря, чтобы получить точку отсчета при проверке размеров размещенных элементов, например, с помощью инструментов разработчика браузера:
.anchor {
anchor-name: --myAnchor;
width: 100px;
height: 100px;
}
.infobox {
position-anchor: --myAnchor;
position: fixed;
}
Мы задаем некоторые отличительные значения свойств для размещенных элементов:
- Размещенные элементы привязываются к якорю с различными значениями
position-area, что размещает элементы в разных местах вокруг элемента якоря. - Высота
heightпервого информационного блока устанавливается равной высоте элемента якоря:anchor-size(height)возвращает высоту элемента якоря. Ширинаwidthэлемента устанавливается в два раза больше ширины элемента якоря с использованием функцииanchor-size()внутри функцииcalc():anchor-size(width)извлекает ширину элемента якоря, которая затем умножается на два. - Высота
heightвторого информационного блока устанавливается на две трети высоты элемента якоря, используя аналогичный метод. - Значения отступов включаются для создания некоторого отступа от элемента якоря.
#infobox1 {
position-area: right;
height: anchor-size(height);
width: calc(anchor-size(width) * 2);
margin-left: 5px;
}
#infobox2 {
position-area: top span-right;
height: calc(anchor-size(height) / 1.5);
margin-bottom: 5px;
}
Результат
Используйте инструменты браузера, чтобы проверить элементы, размещенные относительно якоря. Первый информационный блок будет высотой 100px и шириной 200px, а второй информационный блок будет иметь высоту примерно 66.7px, при этом width по умолчанию устанавливается в max-content.
Спецификации
| Спецификация |
|---|
| Позиционирование якорей CSS # anchor-size-fn |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
anchor-size |
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/anchor-size