@GenriJS

Как обойти проблему перегруза DOM?

Добрый день! Второй день бьюсь. ChatGPT не помогает.
Есть задача анимировать градиент на заднем фоне блока.
Градиент состоит из 9 svg пятен....
Я расположил их так "position absolute top: xx%; left: xx%"
Прописал им несколько анимаций типа такой
@keyframes gradient-flow-up {
0% {
transform: translateY(0%);
}
50% {
transform: translateY(-17%);
}
100% {
transform: translateY(0%);
}
}

И все здорово, визуально меня устраивает, на компьютере работает корректно. Но когда я подключился с телеофона возникли серьезные проблемы.
Дело в том, что в родительском контейнере, помимо svg файлов градиента, лежат контейнеры которые при нажатии кнопок раздвигаются меняя свою высоту. Это в свою очередь вызывает изменение высоты родительского контейнера, что в свою очередь вызывает перерасчет положения svg. После пары нажатий сайт благополучно вылетает.

Помимо прочего оочень сильно начала тормозить анимация разворачивания этих самых контейнеров и переключения switch. Понимаю что из-за перегрузка DOM.

Тесты показали что убрать анимацию не помогает абсолютно никак. Позиционирование элементов svg без использования %, с использованием px помогает. Но визуально не добиться нужного результата.

контейнеры, если что, меняют высоту так description.style.height = `${description.scrollHeight}px`;

Не кидайте камни, если вопрос глупый.
Надеюсь написал все понятно.
Подскажите, как альтернативно можно реализовать такую задачу.

671903e25f360396697951.png

671903776f299756292586.png
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы