Je essaye de réaliser un slider en CSS seulement.
Quand on survole les flèches gauche et droite, le slider doit glisser. Bien sûr.
J'ai essayé quelque chose en utilisant animation-play-state
, animation-fill-mode
(pour conserver les positions) et animation-direction
mais je n'arrive pas à le faire fonctionner complètement.
- En commençant par
animation-play-state: paused
, quand on survole les flèches, cela le change enrunning
. - En survolant la flèche droite, tout va bien. On peut survoler, quitter, survoler à nouveau.
- Mais, dès que je survole la flèche gauche (ce qui change la
animation-direction
enreverse
), ça ne fonctionne plus.
Exemple simplifié:
.wrapper {
overflow: hidden;
position: relative;
width: 500px;
}
.arrows {
z-index: 2;
position: absolute;
top: 0;
height: 100%;
background: #ddd;
opacity: 0.66;
}
.arrows:hover {
opacity: 1;
}
.arrow-l {
left: 0;
}
.arrow-r {
right: 0;
}
.sliding {
height: 160px;
width: 2000px;
background: linear-gradient(to bottom right, transparent 49.9%, gray 50.1%);
animation: slide 2s linear;
animation-play-state: paused;
animation-fill-mode: both;
}
.arrows:hover~.sliding {
animation-play-state: running;
}
.arrow-l:hover~.sliding {
animation-direction: reverse;
}
@keyframes slide {
0% {
transform: translate(0px, 0);
}
100% {
transform: translate(-1500px, 0);
}
}
[ ← ]
[ → ]
Est-ce que quelqu'un peut m'aider à comprendre ce qu'il se passe, et corriger ce comportement indésirable?