#css #performance #animation #gradient #opacity
#css #Производительность #Анимация #градиент #непрозрачность
Вопрос:
У меня есть анимация CSS, которая имеет ужасную производительность, если ее размер большой, около 800 пикселей X 800 пикселей или более, анимацию можно запускать только в новейших версиях Chrome или Edge.
Смотрите пример кода. Если пример недостаточно медленный, добавьте больше кругов или увеличьте размер примера.
Реальная анимация очень похожа на эту, это просто упрощенный пример.
Я хотел бы знать, есть ли способ улучшить производительность этой анимации.
Возможно, конический градиент можно упростить, но он должен выглядеть одинаково!
@property --opacity {
syntax: '<percentage>';
initial-value: 100%;
inherits: false;
}
.test {
display: inline-block;
position: absolute;
border-radius: 100%;
background-image: conic-gradient(
red var(--opacity),
red 10%,
rgba(255, 0, 0, var(--opacity)),
transparent,
transparent
);
will-change: transform, background-image;
width: 800px;
height: 800px;
mask:radial-gradient(circle, transparent 47%, white calc(47% 1px));
-webkit-mask:radial-gradient(circle, transparent 47%, white calc(47% 1px));
animation:
conic-gradient
4.5s
ease-out
0s
infinite
none
running;
}
.a {
position: absolute;
right: -10%;
top: 20%;
}
.b {
position: absolute;
right: -10%;
top: 40%;
}
@keyframes conic-gradient {
50% {
--opacity: 0%;
}
85% {
--opacity: 100%;
}
}
<div class="test"></div>
<div class="test a"></div>
<div class="test b"></div>
Есть ли способ улучшить производительность?
Комментарии:
1. Я был бы рад оставить только один вопрос об одном и том же, чтобы иметь точные ответы. На самом деле вы подняли 4 вопроса об одном и том же, что не очень полезно
2. @TemaniAfif Это другой вопрос! На самом деле я сейчас отвечу на свой собственный другой вопрос, потому что я нашел ответ и использовал его в этом новом вопросе.
3. Я знаю, что это другое, но цель та же. Если вы придерживаетесь одной и той же цели в одном вопросе, было бы более полезно получить точные ответы
4. Мне пришлось добавить довольно много кругов, чтобы увидеть проблему, но на довольно мощном ноутбуке анимация занимала от 5% до 14% процессора. даже в не прерывистом состоянии. Я предполагаю, что система должна проходить через все, когда изменяется переменная CSS, и, возможно, она не может вызвать помощь графического процессора, потому что не понимает, что это непрозрачность, которая изменилась в анимации? (просто догадываюсь здесь).
5. @AHaworth У меня есть AMD Ryzen Pro 4750U, это довольно современный процессор, и я могу заметить снижение производительности. Не только увеличение количества кругов, но и уменьшение разрешения (размера) анимации сильно снижает производительность.