Еще один обходной путь - запустить анимацию для псевдоэлемента вашего элемента content
свойство:
.spinning {
animation-name: spinning;
animation-duration: 2s;
animation-delay: 0s;
animation-iteration-count: infinite;
animation-timing-function: linear;
width: 100px;
height: 100px;
backface-visibility: hidden;
animation-fill-mode: forwards;
background-image: radial-gradient(farthest-corner at 40% 40%, #fff, #f7f7f7 50%, #e8e8e8 75%, #d1d1d1 100%);
}
.spinning::after {
content: "";
animation: trigger-paint .1s forwards 1;
}
@keyframes spinning {
0% { transform: rotate3d(1, -1, 0, -180deg); }
100% { transform: rotate3d(1, -1, 0, 180deg); }
}
@keyframes trigger-paint {
0% {content: ""}
100% {content: none}
}
<div class="spinning"></div>
Но так как уловка заключается в том, что она вызывает перерисовку, я боюсь, что это приводит к огромным последствиям для производительности (в соответствии с моими инструментами разработчика, это перезапускает анимациюцелую кучу раз, хотя он и должен был пнуть один раз).