CSS3 変換プロパティを使用して「フリップ」効果を作成しています。
最近のバージョンの Chrome、Firefox、および Safari でうまく機能しているものがありますが、IE9 と Opera は 2D 変換しかサポートしていないため、ある種のフォールバックを構築するのが難しいと感じています。
現在作業しているコードを表示するフィドルを作成しました。
これへのリンクをここで見つけてください: http://jsfiddle.net/montyhog/SaYUe/9/
私は必ずしもこれらのブラウザで効果を再現しようとしているわけではありません.IMG1がホバーされたときにIMG2が上にフェードインするなどのフォールバックを作成するだけです.
HTMLは次のとおりです。
<div class="h1older">
<div class="flip-container" ontouchstart="this.classList.toggle('hover');">
<div class="flipper">
<div class="front"><img src="http://www.hogshouse.com/fbtest/img/cdartwork/meds.png" /></div>
<div class="back"><img src="http://www.hogshouse.com/fbtest/img/cdartwork/back.png" /></div>
</div>
</div>
</div>
そしてCSS:
.h1older {
width: 400px;
height: 400px;
border: 1px #ff00d5 dashed;
position: absolute;
top: 0px;
left: 0px;
}
.flip-container {
perspective: 1000;
-webkit-perspective: 1000;
-moz-perspective: 1000;
}
.flip-container:hover .flipper, .flip-container.hover .flipper {
transform: rotateY(180deg);
-webkit-transform: rotateY(180deg);
-moz-transform: rotateY(180deg);
}
.flip-container:OnClickListener .flipper, .flip-container.OnClickListener .flipper {
transform: rotateY(180deg);
-webkit-transform: rotateY(180deg);
-moz-transform: rotateY(180deg);
}
.flip-container:focus .flipper, .flip-container.focus .flipper {
transform: rotateY(180deg);
-webkit-transform: rotateY(180deg);
-moz-transform: rotateY(180deg);
}
.flip-container, .front, .back {
width: 100%;
height: 100%;
}
.flipper {
transition: 0.6s;
-webkit-transition: 0.6s;
-moz-transition: 0.6s;
transform-style: preserve-3d;
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
position: relative;
}
.front, .back {
backface-visibility: hidden;
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
position: absolute;
top: 0;
left: 0;
}
.front {
z-index: 2;
background-color: #139eef;
}
.back {
transform: rotateY(180deg);
-webkit-transform: rotateY(180deg);
-moz-transform: rotateY(180deg);
background-color: #ff0000;
}
.front img {
width: 100%;
}
.back img {
width: 100%;
}