Mr. Lavalamp Mr. Lavalamp - 4 months ago 24
CSS Question

CSS3 transform not working properly with Webkit?

I'm trying to rig up a demo I found with Webkit that should have one image on one side of a frame and flip to another image. Instead, webkit just decides to show me the back image on both sides, mirrored. Any help is appreciated very much!

Fiddle: http://jsfiddle.net/sH2jZ/

CSS:

#f1_container {
position: relative;
margin: 10px auto;
width: 450px;
height: 281px;
z-index: 1;
}
#f1_container {
perspective: 1000;
}
#f1_card {
width: 100%;
height: 100%;
transform-style: preserve-3d;
transition: all 1.0s linear;
}
#f1_container:hover #f1_card {
transform: rotateY(180deg);
-webkit-transform: rotateY(180deg);
box-shadow: -5px 5px 5px #aaa;
}
.face {
position: absolute;
width: 100%;
height: 100%;
backface-visibility: hidden;
-webkit-backface-visibility: hidden;
}
.face.back {
display: block;
transform: rotateY(180deg);
-webkit-transform: rotateY(180deg);
box-sizing: border-box;
color: white;
text-align: center;
background-color: #aaa;
}


HTML:

<div id="f1_container">
<div id="f1_card" class="shadow">
<div class="front face">
<img src="http://css3.bradshawenterprises.com/images/Windows%20Logo.jpg"/>
</div>
<div class="back face center">
<img src="http://blog.roblox.com/wp-content/uploads/2012/09/Mac-OS-X-10.5-Leopard.png" height="281" width="450" />
</div>
</div>
</div>

Answer

You've missed -webkit- version for couple of your transform-related statements:

#f1_container {
    position: relative;
    margin: 10px auto;
    width: 450px;
    height: 281px;
    z-index: 1;
}
#f1_container {
    perspective: 1000;
}
#f1_card {
    width: 100%;
    height: 100%;
    transform-style: preserve-3d;
    -webkit-transform-style: preserve-3d;
    transition: all 1.0s linear;
    -webkit-transition: all 1.0s linear;
}
#f1_container:hover #f1_card {
    transform: rotateY(180deg);
    -webkit-transform: rotateY(180deg);
    box-shadow: -5px 5px 5px #aaa;
}
.face {
    position: absolute;
    width: 100%;
    height: 100%;
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
}
.face.back {
    display: block;
    transform: rotateY(180deg);
    -webkit-transform: rotateY(180deg);
    box-sizing: border-box;
    color: white;
    text-align: center;
    background-color: #aaa;
}

DEMO