CSS3 трансформация, засягаща други елементи с chrome/safari

Имам проблем, при който моите css3 трансформации влияят на други елементи на страницата и дори ги карат да трептят. Видях друга публикация за това, но те нямаха решение на проблема.

http://scosha.mybigcommerce.com/w107b/, когато превъртите над навигацията, виждате анимиран css3 трансформация. Работи добре във firefox без трептене, но с chrome и safari ефектът е много очевиден, виждате го в елементите на падащото меню, както и в текста на долния колонтитул.


person mfdeath    schedule 10.10.2012    source източник
comment
Работи напълно добре - Chrome 24 на Mac   -  person Miha Rekar    schedule 10.10.2012
comment
Тествах в safari/chrome на няколко Mac, ефектът всъщност беше по-лош в safari.   -  person mfdeath    schedule 11.10.2012
comment
връзката е мъртва. но така или иначе изпитвам същото на chrome 24 на моя компютър.   -  person vsync    schedule 15.01.2013


Отговори (4)


Това е известен проблем с изобразяването на текст от Macintosh в Chrome 22 (и очевидно Safari). Ускоряването на графичния процесор кара MacOS да превключва от субпиксел към антиалиасинг в скала на сивото, което кара теглото на шрифта да изглежда забележимо намалено.

Актуализация:

Както OP отбелязва по-долу, корекцията е да се приложи -webkit-font-smoothing: antialiased - който прилага антиалиасинг в сивата скала по всяко време. Ако направите това, вероятно ще искате да увеличите теглото на шрифта навсякъде, тъй като антиалиазираният текст в скала на сивото изглежда значително по-тънък от субпиксела

Можете да получите същия ефект, като приложите свойства, които карат съдържанието винаги да бъде GPU ускорено (като back-face-visibility: hidden), но тъй като не е гарантирано, че те ще причинят GPU ускорение в бъдещите версии на браузъра - това е по-устойчиво за бъдещето просто посочете сивата скала.

person Michael Mullany    schedule 11.10.2012
comment
Благодаря, пич, намери това, което търсих. За тези от вас, които попаднаха тук от googlesphere: -webkit-font-smoothing: antialiased; изглежда е решил проблема. - person mfdeath; 11.10.2012
comment
Вероятно си струва да се отбележи, че настройката -webkit-font-smoothing: subpixel-antialiased; ще постигне същото, без да накара типа да изглежда по-слаб. - person Andrew Philpott; 24.05.2013
comment
comment
Благодаря ти @AndrewPhilpott !!! Мислех, че ще остана с този тънък текст, докато не видях коментара ви. - person Gavin; 18.08.2017

Работно решение за мигащи елементи по време на преход в Chrome е да настроите CSS за родителски възел:

-webkit-backface-visibility: hidden;

person zajc    schedule 06.11.2013
comment
Струва ми се, че това просто настройва изобразяването на шрифта на антиалиасинг в сивата скала. - person enyo; 07.01.2014
comment
Това работи за мен, когато се добави към трептящия елемент (не към родителския). - person Fateh Khalsa; 04.02.2014

Решението за мен беше да приложа долния css към родителя на всички засегнати елементи.

-webkit-transform-style: preserve-3d;
-webkit-transform:translate3d(0,0,0);
person Bertrand    schedule 09.01.2015
comment
И при мен работи само с -webkit-transform:translate3d(0,0,0);. - person Mosh Feu; 22.02.2016

Имах същия проблем в Chrome, но не и във Firefox.

Временната корекция е да добавите корекция web-kit и да премахнете прехода:

-webkit-transition: none;
person Mike    schedule 13.10.2012