Controle deslizante CSS com setas usando animação
Eu estou tentando alcançar um controle deslizante apenas CSS.
Quandohover
setas esquerda e direita, o controle deslizante devedeslizar. Claro.
Eu tentei algo usandoanimation-play-state
, animation-fill-mode
(para manter as posições) eanimation-direction
mas não sou capaz de fazê-lo funcionar totalmente.
animation-play-state: paused
, hover
as setas mudam pararunning
.Emhover
da seta direita, está tudo bem. Podemos pairar, sair, pairar novamente.Mas assim que euhover
a seta esquerda (que altera oanimation-direction
parareverse
), está quebrado.Snippet simplificado:
.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);
}
}
<div class="wrapper">
<div class="arrows arrow-l">[ ← ]</div>
<div class="arrows arrow-r">[ → ]</div>
<div class="sliding"></div>
</div>
Alguém pode me ajudar a entender o que está acontecendo e corrigir esse comportamento indesejado?