Видимость Backface нарушена в Chrome (некоторые платформы/версии)

Так что я немного огляделся, кажется, что -webkit-backface-visibility функциональность немного барахлит. В Chrome 18 на Mac и Linux он работает нормально. В Chrome 18 на Windows это не так. Тем не менее, я видел других людей, работающих под управлением Chrome на Mac, где он также не работает.

вот моя тестовая скрипка:http://jsfiddle.net/csaltyj/TYuL3/

к сожалению, так как я делаю карточную анимацию, мне нужно использовать -webkit-backface-visibility: hidden чтобы скрыть заднюю сторону карты. Есть эквивалент я могу использовать, что работает 100% на Chrome, несмотря ни на что?

5 ответов


хорошо, я сделал некоторые исследования, и, по-видимому, это зависит от машины и от используемой версии chrome.

поскольку chromium следует за развитием chrome, мы можем видеть, что эта проблема иногда появляется http://code.google.com/p/chromium/issues/detail?id=39044

Я нашел 2 решения I не могу попробуйте, так как этот CSS работает на моем компьютере.

  • попытка запустить chrome с помощью этой опции : --enable-accelerated-compositing
  • попытка https://stackoverflow.com/a/9276526/460368
  • ждем новую версию chrome;)

вы можете получить inspire by это от cssplay

CSS:

#container {position: relative; height:362px; width: 282px; margin: 0 auto;
-webkit-perspective: 800px;
-moz-perspective: 800px;
}
#container div {position:absolute; left:0; top:0; width:242px; height: 322px; padding:20px; background:#463;
-ms-border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;

-webkit-transition: 1.5s ease-in-out;
-moz-transition: 1.5s ease-in-out;
-ms-transition: 1.5s ease-in-out;
-o-transition: 1.5s ease-in-out;
transition: 1.5s ease-in-out;
}
#container div.lower {font-family: verdana, arial, sans-serif; background:#642;
background: -moz-linear-gradient(-45deg, #642, #864 50%, #642 100%);  
background: -webkit-gradient(linear, 0 0, 100% 100%, from(#642), color-stop(50%, #a86), color-stop(100%, #642));
-moz-transform-style: preserve-3d;
-moz-backface-visibility: hidden;
-webkit-transform-style: preserve-3d;
-webkit-backface-visibility: hidden;
-moz-transform: rotateY(-180deg);
-webkit-transform: rotateY(-180deg);
}
#container div.lower h1 {font-size:20px; padding:0; margin:0; color:#fff; line-height:40px;}
#container div.lower p {font-size:11px; padding:0; margin:0; color:#eee; line-height:20px;}
#container div.lower a {color:#ff0;}

#container div.upper {
-moz-transform-style: preserve-3d;
-moz-backface-visibility: hidden;
-webkit-transform-style: preserve-3d;
-webkit-backface-visibility: hidden;
background: -moz-linear-gradient(-45deg, #463, #8a7 50%, #463 100%);  
background: -webkit-gradient(linear, 0 0, 100% 100%, from(#463), color-stop(50%, #8a7), color-stop(100%, #463)); 
}
#container div.upper img {border:1px solid #fff;}

#container:hover div.lower {
-moz-transform: rotateY(0);
-webkit-transform: rotateY(0);
}
#container:hover div.upper {
-webkit-transform: rotateY(180deg);
-moz-transform: rotateY(180deg);
}

HTML-код :

<div id="container">
    <div class="lower">

        <h1>The Barn Owl</h1>
        <p>(Tyto alba) is the most widely distributed species of owl, and one of the most widespread of all birds. It is also referred to as Common Barn Owl, to distinguish it from other species in the barn-owl family Tytonidae. These form one of two main lineages of living owls, the other being the typical owls (Strigidae). T. alba is found almost anywhere in the world except polar and desert regions, Asia north of the Alpide belt, most of Indonesia, and the Pacific islands.</p>
        <p>Source <a href="http://en.wikipedia.org/wiki/Barn_Owl">Wikipedia</a>
    </div>
    <div class="upper">
        <img src="cssplay7/owl.jpg" alt="Barn owl" />
    </div>

</div>

Я нашел довольно элегантный обходной путь, используя transition-delay на непрозрачности, чтобы скрыть его middleway через анимацию.

http://jsfiddle.net/TeXTQ/

div {
    -webkit-transition-property: -webkit-transform, opacity;
    -webkit-transition-duration:2s, 0;
    -webkit-transition-timing-function:ease-in-out,ease-in-out;
    -webkit-transition-delay:0,1s;
}
div:hover {
    -webkit-transform: rotateX(-180deg) rotateY(0deg);
    opacity:0;
}

я наткнулся на эту проблему прямо сейчас, с прототипом моего. Я думал, что случайно изменил какое - то существенное кодирование-но нет, возврат к предыдущим коммитам, где он определенно работал, не помог.

Веришь или нет: перезагрузка Chrome исправил это для меня.


Я решил эту проблему, используя этот CSS transform-style: preserve-3d;или точнее этот компас mixin @include transform-style(preserve-3d);


-webkit-transition: -webkit-transform 1s ease-in-out, opacity .1s .5s  ease-in-out;  

где непрозрачность на :hover значение 0.

анимация занимает 1 секунду, в 0,5 секунды карта невидима, потому что она находится в стороне от пользователя, так что это время, когда opacit => 0 происходит в 0,1 с. это прекрасно работает.