Я унаследовал этот фрагмент кода для элемента-героя, который должен быть анимирован, но работает неправильно (актуален только dsektop). Я постараюсь описать это как можно лучше:
Как это должно выглядеть
элемент с #centerpiece представляет собой круг с анимированной рамкой; граница рисуется от 0 до 100 в ANIMATION_DURATION,
есть строки описаний, каждая из которых имеет формат .description-item-desktop. Их всегда 4, и они располагаются в каждом углу (правом нижнем, левом нижнем, левом верхнем, правом верхнем) относительно #centerpiece. Предполагается, что эти элементы плавают по кривой, следуя за движением часов (и анимированной рамкой, упомянутой ранее),
также есть «стрелка» svg — точнее, 4 стрелки, каждая из которых направлена от центра к углу. Они должны оставаться «установленными» в центре и вращать кончик в соответствии с соответствующим элементом описания.
Проблемы, с которыми я столкнулся
В настоящее время у .description-item-desktop есть проблема: при анимации текст мерцает. Похоже, что он рендерится с каждым кадром, но я не уверен. Сейчас это моя самая насущная проблема, но есть и другие: стрелки svg также анимированы правильно, и я не знаю, как добиться желаемого эффекта (подсказка после элемента описания).
Что я пробовал
Я попробовал добавить это в .description-item-desktop, потому что видел, как кто-то упомянул, что это может помочь с мерцающим текстом, но это ничего не изменило.
Я также пытался (несколько раз) переработать контроллеры анимации и всю логику, лежащую в их основе, но, честно говоря, не знаю, как это сделать, и для полноценной работы всегда чего-то не хватало (но всегда был мерцающий текст).
Воспроизведение
Я унаследовал этот фрагмент кода для элемента-героя, который должен быть анимирован, но работает неправильно (актуален только dsektop). Я постараюсь описать это как можно лучше: Как это должно выглядеть [list] [*]элемент с #centerpiece представляет собой круг с анимированной рамкой; граница рисуется от 0 до 100 в ANIMATION_DURATION, [*]есть строки описаний, каждая из которых имеет формат .description-item-desktop. Их всегда 4, и они располагаются в каждом углу (правом нижнем, левом нижнем, левом верхнем, правом верхнем) относительно #centerpiece. Предполагается, что эти элементы плавают по кривой, следуя за движением часов (и анимированной рамкой, упомянутой ранее), [*]также есть «стрелка» svg — точнее, 4 стрелки, каждая из которых направлена от центра к углу. Они должны оставаться «установленными» в центре и вращать кончик в соответствии с соответствующим элементом описания. [/list] Проблемы, с которыми я столкнулся В настоящее время у .description-item-desktop есть проблема: при анимации текст мерцает. Похоже, что он рендерится с каждым кадром, но я не уверен. Сейчас это моя самая насущная проблема, но есть и другие: стрелки svg также анимированы правильно, и я не знаю, как добиться желаемого эффекта (подсказка после элемента описания). Что я пробовал Я попробовал добавить это в .description-item-desktop, потому что видел, как кто-то упомянул, что это может помочь с мерцающим текстом, но это ничего не изменило. [code].description-item-desktop { transition: opacity 1s ease-in-out; will-change: opacity; backface-visibility: hidden; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
.description-item-desktop.floating-animation { animation-duration: 7000ms; animation-timing-function: ease-in-out; animation-iteration-count: infinite; will-change: transform; transform: translate3d(0, 0, 0); } [/code] Я также пытался (несколько раз) переработать контроллеры анимации и всю логику, лежащую в их основе, но, честно говоря, не знаю, как это сделать, и для полноценной работы всегда чего-то не хватало (но всегда был мерцающий текст). Воспроизведение
const connectionSvgs = { rb: document.getElementById("connection-svg-rb"), lb: document.getElementById("connection-svg-lb"), rt: document.getElementById("connection-svg-rt"), lt: document.getElementById("connection-svg-lt"), }; const ANIMATION_DURATION = 6000; // animation duration const TRANSITION_DELAY = 500; // delay before starting the next animation for the next container + arrow const RESET_DELAY = 300; const START_DELAY = 100;
// controller to handle animations with different parameters, depending on whether env is desktop or mobile function createAnimationController(type, config) { const items = document.querySelectorAll(config.items); const progressCircle = document.querySelector(config.progressCircle);
if (items.length { items[currentIndex].classList.remove("opacity-0"); items[currentIndex].classList.add("opacity-100");
@keyframes floatArc_rt { // z lewej góry do góry 0% { transform: translateX(0) translateY(0); } 100% { transform: translateX(20px) translateY(-20px); } }
@keyframes floatArc_lt { // z prawej góry do dołu 0% { transform: translateX(0) translateY(0); } 100% { transform: translateX(20px) translateY(20px); } }