Задать вопрос

Почему изменение pointer events вызывает очень тяжёлый пересчёт стилей?

Работаю над оптимизацией компонента плавного кинетического скроллинга, написанного на vue.js. Как ни странно узким местом стала оптимизация, основанная на добавление pointer-events: none во время скроллинга. Она вполне успешно справляется с нежелательной перерисовкой из за hover эффектов, но в то же время вызывает неприлично тяжёлые 'Recalculate Style' и 'Update Layer Tree', которые на моём 4770k занимают в среднем 3 мс и в целом тормозов анимации не вызывают, но как только дело доходит до тестирования на старом ноутбуке, то там это уже далеко не 3 мс и анимация выглядит довольно плачевно. Уже подумываю над тем, чтобы вместо pointer-events использовать просто перекрывающий всё div. Возможно решить эту проблему как-нибудь элегантнее?
e95da18c7be9493c8969b5decbb774b6.png
  • Вопрос задан
  • 337 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    JavaScript
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
Что, если добавлять mousein событие с capture=true и preventDefault? Вариант с дивом вызовет те же самые операции с обновлением слоев и пересчетом стилей.
Ответ написан
Попробуйте использовать contain вкупе с pointer-events. Возможно, это то, что вам нужно.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы