Кратко
СкопированоФункция anchor привязывает таргет элемент к одной из сторон якорного элемента.
Пример
Скопировано
.target { top: anchor(bottom);}
.target {
top: anchor(bottom);
}
Как пишется
СкопированоФункция anchor принимает три аргумента:
<anchor— имя якоря, относительно которого нужно спозиционировать текущий таргет элемент. Необязятальный аргумент, если его опустить, то функция будет ссылаться на значение указаное в свойстве- name> position;- anchor <anchor— сторона якорного элемента, относительно которой нужно спозиционировать текущий таргет элемент;- side> <length– фолбэк-значение, применится, если функция не нашла якорный элемент, на который мы пытаемся сослаться, или если передали некорректное значение для- percentage> <anchor. Необязятальный аргумент.- side>
.anchor { anchor-name: --my-anchor;}.target { /* Функция anchor() будет использовать якорь --my-anchor, указанный в свойстве anchor-name, поскольку в неё явно не передан никакой другой якорь. */ top: anchor(bottom); /* В данном случае функция anchor() будет ссылаться на якорь --custom-anchor. Якорь --my-anchor из свойства anchor-name будет проигнорирован. */ top: anchor(--custom-anchor bottom); /* В этом примере target элемент будет иметь top: 50%, если по каким-то причинам функция anchor() не сможет привязаться к указанной стороне переданного якоря. */ top: anchor(--custom-anchor bottom, 50%);}
.anchor {
anchor-name: --my-anchor;
}
.target {
/*
Функция anchor() будет использовать якорь --my-anchor,
указанный в свойстве anchor-name,
поскольку в неё явно не передан никакой другой якорь.
*/
top: anchor(bottom);
/*
В данном случае функция anchor() будет ссылаться на якорь --custom-anchor.
Якорь --my-anchor из свойства anchor-name будет проигнорирован.
*/
top: anchor(--custom-anchor bottom);
/*
В этом примере target элемент будет иметь top: 50%,
если по каким-то причинам функция anchor() не сможет привязаться
к указанной стороне переданного якоря.
*/
top: anchor(--custom-anchor bottom, 50%);
}
Как понять
СкопированоФункция anchor ссылается на параметры позиционирования якорного элемента. Её можно использовать, чтобы расположить таргет элемент в нужном месте относительно якоря. Может быть применена только в inset-свойствах.
Чтобы лучше понять, как функция работает, давайте рассмотрим её работу на примере демки:
.anchor { anchor-name: --my-anchor;}.target { position: absolute; position-anchor: --my-anchor; top: anchor(bottom); left: anchor(right);}
.anchor {
anchor-name: --my-anchor;
}
.target {
position: absolute;
position-anchor: --my-anchor;
top: anchor(bottom);
left: anchor(right);
}
Стоит отметить, что в качестве аргумента <anchor в функцию можно передавать только значения, соответствующие оси inset-свойства, для которого функция применяется.
.target { /* top и bottom находятся в одной оси (вертикальной), поэтому следующие две строки будут работать. */ top: anchor(top); top: anchor(bottom); /* top находится в вертикальной оси, left и right в горизонтальной. Оси разные, поэтому строчки ниже работать не будут. */ top: anchor(left); top: anchor(right);}
.target {
/*
top и bottom находятся в одной оси (вертикальной),
поэтому следующие две строки будут работать.
*/
top: anchor(top);
top: anchor(bottom);
/*
top находится в вертикальной оси, left и right в горизонтальной.
Оси разные, поэтому строчки ниже работать не будут.
*/
top: anchor(left);
top: anchor(right);
}
Также при работе с функцией anchor можно использовать процентные значения
.target { top: anchor(50%);}
.target {
top: anchor(50%);
}
использовать её значение в вычислениях
.target { top: calc(anchor(bottom) + 10px);}
.target {
top: calc(anchor(bottom) + 10px);
}
и взаимодействовать с логическими свойствами
.target { inset-block-end: anchor(start);}
.target {
inset-block-end: anchor(start);
}
Помимо этого в качестве <anchor можно ещё использовать значения inside, outside:
inside– соответствует той же самой стороне, для которой применяется функцияanchor;( ) outside– соответствует противоположной.
- Chrome 125, поддерживается
- Edge 125, поддерживается
- Firefox, не поддерживается
- Safari, не поддерживается