Предотвратить мерцание на webkit-переход webkit-transform [дубликат]




Возможные Дубликаты:
iPhone webkit css анимации вызывают мерцание






по какой-то причине прямо перед моей анимацией свойства webkit-transform происходит небольшое мерцание. Вот что я делаю:



CSS:



#element {
-webkit-transition: -webkit-transform 500ms;
}


JavaScript:



$("#element").css("-webkit-transform", "translateX(" + value + "px)");


прямо перед переходом происходит мерцание. Любая идея, почему это так, и как я мог бы исправить проблема?



спасибо!



обновление: это происходит только в Safari. Этого не происходит в Chrome, хотя анимация работает.

587   8  

8 ответов:

решение, описанное здесь: iPhone WebKit CSS анимации вызывают мерцание.

для вашего элемента, вам нужно установить

-webkit-backface-visibility: hidden;

правила:

-webkit-backface-visibility: hidden;

не будет работать для спрайтов или фонов изображений.

body {-webkit-transform:translate3d(0,0,0);}

винты фоны, которые выложены плиткой.

Я предпочитаю сделать класс под названием no-flick и сделать это:

.no-flick{-webkit-transform:translate3d(0,0,0);}

добавьте это свойство css к мерцающему элементу:

-webkit-transform-style: preserve-3d;

(и большое спасибо Натан Hoad: http://nathanhoad.net/how-to-stop-css-animation-flicker-in-webkit)

Я должен был использовать:

-webkit-perspective: 1000;
-webkit-backface-visibility: hidden;    

на элементе, или я все равно получу flickr В первый раз, когда переход произошел после загрузки страницы

для более подробного объяснения, проверьте этот пост:

http://www.viget.com/inspire/webkit-transform-kill-the-flash/

Я бы определенно избегал применять его ко всему телу. Ключ состоит в том, чтобы убедиться, что любой конкретный элемент, который вы планируете преобразовать в будущем, начинает отображаться в 3d, поэтому браузеры не должны переключаться в режимы рендеринга и выходить из них. Добавление

-webkit-transform: translateZ(0) 

(или любой из уже упомянутых вариантов) чтобы анимированный элемент выполнил это.

я обнаружил, что применение -webkit-backface-visibility: hidden; к переводящему элементу и -webkit-transform: translate3d(0,0,0); для всех его детей мерцание затем исчезает

запуск аппаратно ускоренного рендеринга для проблемного элемента. Я бы посоветовал не делать этого на*, body или HTML-тегах для производительности.

.problem{
  -webkit-transform:translate3d(0,0,0);
}

оба из вышеперечисленных двух ответов работают для меня с аналогичной проблемой.

однако подход body {-webkit-transform} приводит к тому, что все элементы на странице эффективно отображаются в 3D. это не самое худшее, но это немного меняет рендеринг текста и других элементов в стиле CSS.

Это может быть эффект, который вы хотите. Это может быть полезно, если вы делаете много преобразования на Вашей странице. В противном случае, - webkit-backface-видимость: скрытый на элемент ваше преобразование является наименее инвазивным вариантом.

Comments

    Ничего не найдено.