Вам нужно отрегулировать градиент, а затем рассмотреть процентное значение, чтобы получить лучший эффект:
.Box {
height: 100px;
width: 100px;
margin: 16px;
background: #f6f7f8;
border-radius: 50%;
}
.Shine {
display: inline-block;
background:
linear-gradient(to bottom right, #eeeeee 40%, #dddddd 50%, #eeeeee 60%);
background-size:200% 200%;
background-repeat: no-repeat;
animation:placeholderShimmer 2s infinite linear;
}
@keyframes placeholderShimmer {
0% {
background-position:100% 100%; /*OR bottom right*/
}
100% {
background-position:0 0; /*OR top left*/
}
}
<div class="Shine">
<div class="Box"></div>
</div>
Хитрость в том, что фон будет в два раза больше контейнера (200%x200%
) с диагональным направлением, и мы сделаем окраску посередине (около 50%
).Затем мы просто передвинем этот большой фон с top left
на bottom right
.
. Вы можете проверить этот ответ для более подробной информации о том, как он работает: https://stackoverflow.com/a/51734530/8620333