2016-01-14 2 views
1

В интересной статье Everything You Need to Know About the CSS will-change Property говорится, что использование взлома translate3d() - это старый способ делать вещи, если вы хотите аппаратное ускорение, а вместо этого вы должны использовать will-change. Есть ли какая-либо польза в производительности при использовании will-change? Я обнаружил, что в некоторых случаях очень сложно добавить will-change через JavaScript непосредственно перед анимацией триггеров элементов. Например,В чем преимущество использования свойства will-change вместо translate3d для аппаратного ускорения?

  1. Вы не можете просто положить will-change в CSS и рассчитывать на его работу, потому что это будет хуже, если у вас есть несколько элементов.
  2. Вы не можете поставить will-change в :hover псевдоселектор, потому что браузеру требуется некоторое время для подготовки.
  3. Вы оставите анимацию в событии клика, когда вы можете добавить willChange при наведении на JavaScript, оставляя браузер достаточно времени для подготовки (200 мс).

В целом вы должны как-то предсказывать поведение пользователей, и это сложно. Это слишком сложно (вы должны также удалить will-change после окончания анимации) над translate3d(). Зачем использовать его?

+0

Оформить заказ этих двух статей, чтобы получить более подробную информацию: https://developer.mozilla.org/en/docs/Web/CSS/will-change https://css-tricks.com/almanac/properties/w/will-change/ –

+0

Перед публикацией вопроса я прочитал все эти статьи. Проверьте мою связанную статью для уточнения моего вопроса. – Alexa

+0

@JeremyBanks Я обновил сообщение, надеюсь, что это поможет! – Alexa

ответ

3
  1. Как вы уже сказали, определение превращения представляет собой взлом. will-change - это стандарт.

  2. Есть рекомендации по использованию will-change, а когда нет (с общей идеей использовать его экономно и только тогда, когда вам нужно). С другой стороны, многие авторы рекомендуют использовать отказоустойчивость без отказа.

Если вы ожидаете пользователю взаимодействовать с элементом таким образом, что вызывает некоторые ресурсоемких визуальный эффект, установите will-change. Просто как тот. Вам не нужно прогнозировать, когда или когда пользователь когда-либо будет взаимодействовать с элементом и решить, стоит ли устанавливать will-change - вы только что установили will-change и позволили обозревателю беспокоиться обо всем остальном.

Вы не делаете will-changeвсе вещи, но в тот момент вы ожидаете некоторое свойство менять на определенный элемент, сообщить браузеру, что это специфическое свойство will-change по этому конкретному элементу. Независимо от того, действительно ли пользователь запускает изменение в этой конкретной загрузке страницы или сеансе просмотра, вам не подходит как автор.

will-change по своей сути не имеет лучшей производительности - на самом деле, он делает почти то же самое, что и взлом на высоком уровне. Повышение производительности происходит в основном из разумного использования will-change, поэтому вы не тратите ресурсы системы на то, что им не нужно (см. Пункт № 2 выше).

Смежные вопросы