Ho un div la cui altezza e larghezza saranno dinamiche. Sto cercando di avere un bordo di animazione tratteggiato su quel div. Il problema che sto affrontando è che la durata dell'animazione non è relativa all'altezza e alla larghezza. vale a dire qualsiasi altezza e larghezza la sua animazione dovrebbe essere alla stessa velocità in tutti gli angoliLa durata dell'animazione dovrebbe essere relativa all'altezza e alla larghezza
.dynamic {
position: absolute;
height: 30px;
width: 300px;
overflow: hidden
}
.dynamic::before {
animation: slideDash 2.5s infinite linear;
position: absolute;
content: '';
left: 0;
right: 0;
outline: 1px dashed #fff;
box-shadow: 0 0 0 1px rgb(23, 163, 102);
width: 200%;
}
.dynamic::after {
animation: slideDash 2.5s infinite linear reverse;
position: absolute;
content: '';
right: 0;
bottom: 0;
outline: 1px dashed #fff;
left: 0;
box-shadow: 0 0 0 1px rgb(23, 163, 102);
width: 200%;
}
.dynamic div::before {
animation: slideDashRev 2.5s infinite linear reverse;
position: absolute;
content: '';
top: 0;
bottom: 0;
outline: 1px dashed #fff;
box-shadow: 0 0 0 1px rgb(23, 163, 102);
height: 200%;
}
.dynamic div::after {
animation: slideDashRev 2.5s infinite linear;
position: absolute;
content: '';
top: 0;
bottom: 0;
outline: 1px dashed #fff;
right: 0;
box-shadow: 0 0 0 1px rgb(23, 163, 102);
height: 200%;
}
@keyframes slideDash {
from {
transform: translateX(-50%);
}
to {
transform: translateX(0%);
}
}
@keyframes slideDashRev {
from {
transform: translateY(-50%);
}
to {
transform: translateY(0%);
}
}
<div class="dynamic">
<div></div>
</div>
Provare a cambiare l'altezza e la larghezza del genitore. puoi vedere che la velocità di animazione varia. Capisco il suo bcoz della durata pari. Ma c'è comunque da superare questo –
Umm, può essere coinvolto JS? Se la larghezza e l'altezza non sono uguali, non dovrebbero avere uguale durata dell'animazione. – Passerby