offset-anchor
Baseline
Large disponibilité
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis août 2023.
La propriété CSS offset-anchor définit le point à l'intérieur de la boîte d'un élément se déplaçant le long d'un offset-path qui est effectivement en mouvement le long du chemin.
Exemple interactif
offset-anchor: auto;
offset-anchor: right top;
offset-anchor: left bottom;
offset-anchor: 20% 80%;
<section class="default-example" id="default-example">
<div class="wrapper">
<div id="example-element"></div>
</div>
<button id="playback" type="button">Lecture</button>
</section>
#example-element {
offset-path: path("M 0,20 L 200,20");
animation: distance 3000ms infinite alternate ease-in-out;
width: 40px;
height: 40px;
background: cyan;
animation-play-state: paused;
}
#example-element.running {
animation-play-state: running;
}
.wrapper {
background-image: linear-gradient(
to bottom,
transparent,
transparent 49%,
black 50%,
black 51%,
transparent 52%
);
border: 1px solid #cccccc;
width: 90%;
}
@keyframes distance {
0% {
offset-distance: 0%;
}
100% {
offset-distance: 100%;
}
}
#playback {
position: absolute;
top: 0;
left: 0;
font-size: 1em;
}
const example = document.getElementById("example-element");
const button = document.getElementById("playback");
button.addEventListener("click", () => {
if (example.classList.contains("running")) {
example.classList.remove("running");
button.textContent = "Lecture";
} else {
example.classList.add("running");
button.textContent = "Pause";
}
});
Syntaxe
/* Valeurs avec un mot-clé */
offset-anchor: top;
offset-anchor: bottom;
offset-anchor: left;
offset-anchor: right;
offset-anchor: center;
offset-anchor: auto;
/* Valeurs de type <percentage> */
offset-anchor: 25% 75%;
/* Valeurs de type <length> */
offset-anchor: 0 0;
offset-anchor: 1cm 2cm;
offset-anchor: 10ch 8em;
/* Valeurs de décalage relatives à un bord */
offset-anchor: bottom 10px right 20px;
offset-anchor: right 3em bottom 10px;
/* Valeurs globales */
offset-anchor: inherit;
offset-anchor: initial;
offset-anchor: revert;
offset-anchor: revert-layer;
offset-anchor: unset;
Valeurs
auto-
offset-anchorreçoit la même valeur quetransform-originsauf sioffset-pathvautnone, dans ce cas, elle récupère la valeur deoffset-position. <position>-
Une position (
<position>) définie par un couple de coordonnées X/Y qui permet de placer un objet par rapport aux bords de sa boîte. On peut définir la position à partir de une à quatre valeurs. Pour plus d'informations, voir les pages sur<position>etbackground-position. La syntaxe à trois valeurs ne fonctionne pas pour<position>, excepté pourbackground(-position).
Définition formelle
| Valeur initiale | auto |
|---|---|
| Applicabilité | éléments transformables |
| Héritée | non |
| Pourcentages | relatifs à la largeur et à la hauteur de la boîte de référence de l'élément |
| Valeur calculée | pour une valeur de type <length> sa valeur absolue, sinon un pourcentage |
| Type d'animation | une position |
Syntaxe formelle
offset-anchor =
auto |
<position>
<position> =
<position-one> |
<position-two> |
<position-four>
<position-one> =
left |
center |
right |
top |
bottom |
x-start |
x-end |
y-start |
y-end |
block-start |
block-end |
inline-start |
inline-end |
<length-percentage>
<position-two> =
[ left | center | right | x-start | x-end ] && [ top | center | bottom | y-start | y-end ] |
[ left | center | right | x-start | x-end | <length-percentage> ] [ top | center | bottom | y-start | y-end | <length-percentage> ] |
[ block-start | center | block-end ] && [ inline-start | center | inline-end ] |
[ start | center | end ]{2}
<position-four> =
[ [ left | right | x-start | x-end ] <length-percentage> ] && [ [ top | bottom | y-start | y-end ] <length-percentage> ] |
[ [ block-start | block-end ] <length-percentage> ] && [ [ inline-start | inline-end ] <length-percentage> ] |
[ [ start | end ] <length-percentage> ]{2}
<length-percentage> =
<length> |
<percentage>
Exemples
>Définir différentes valeurs de offset-anchor
Dans l'exemple suivant, nous avons trois éléments <div> imbriqués dans des éléments <section>. Chaque <div> reçoit le même offset-path (une ligne horizontale de 200 pixels de long) et est animé pour se déplacer le long de celle-ci. Les trois reçoivent ensuite différentes valeurs de background-color et de offset-anchor.
Chaque <section> a été mis en forme avec un dégradé linéaire pour lui donner une ligne horizontale traversant son centre, afin de vous donner un affichage visuel de l'endroit où les chemins d'encart des <div> se trouvent.
Cela vous permet de voir quel effet ont les différentes valeurs de offset-anchor — la première, auto, fait se déplacer le point central du <div> le long du chemin. Les deux autres font se déplacer respectivement les points supérieur droit et inférieur gauche du <div> le long du chemin.
HTML
<section>
<div class="offset-anchor1"></div>
</section>
<section>
<div class="offset-anchor2"></div>
</section>
<section>
<div class="offset-anchor3"></div>
</section>
CSS
div {
offset-path: path("M 0,20 L 200,20");
animation: move 3000ms infinite alternate ease-in-out;
width: 40px;
height: 40px;
}
section {
background-image: linear-gradient(
to bottom,
transparent,
transparent 49%,
black 50%,
black 51%,
transparent 52%
);
border: 1px solid #cccccc;
margin-bottom: 10px;
}
.offset-anchor1 {
offset-anchor: auto;
background: cyan;
}
.offset-anchor2 {
offset-anchor: right top;
background: purple;
}
.offset-anchor3 {
offset-anchor: left bottom;
background: magenta;
}
@keyframes move {
0% {
offset-distance: 0%;
}
100% {
offset-distance: 100%;
}
}
Résultat
Spécifications
| Spécification |
|---|
| Motion Path Module Level 1> # offset-anchor-property> |
Compatibilité des navigateurs
Voir aussi
- La propriété raccourcie
offset - La propriété
offset-distance - La propriété
offset-rotate - L'élément SVG
<path>