問題
壁が落ちるようにレイヤーを表示して、その背後にあるレイヤーを表示しようとしています。 2つの固定div位置を設定しました。 「壁」divは9999のz-indexを持ち、「背景」divは0のz-indexを持ちます。
私がテストしたWebkitブラウザー(Safari/IOS)では、アニメーションが「壁」で開始すると、Zインデックスが失われるか無視され、「壁」レイヤーが背景のdivの背後に突然消えるように見えます。
レイヤーのz-indexを保持する方法に関するアイデアはありますか?前もって感謝します!
コード例(注:下部のjsFiddle)
HTMLコード
<div id="wall">
This is the wall
</div>
<div id="background">
This is the background
</div>
<button id="start" style="float: right;">
Flip Down
</button>
ボタンを有効にするいくつかのJavaScript
$('#start').click(function(){
alert('Should Fall Down like a wall, revealing the background');
$('#wall').addClass('animated flipDown');
});
CSSコード(animate.cssから引用)
#wall{
background-color: #F00;
width: 100px;
height: 100px;
position:fixed;
top:0;
left:0;
z-index: 9999;
}
#background{
background-color: #00F;
width: 100px;
height: 100px;
position:fixed;
top:0;
left:0;
z-index: 0;
}
.animated {
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
/*** flipDown ***/
@-webkit-keyframes flipDown {
0% {
-webkit-transform: perspective(400px) rotateX(0deg);
transform: perspective(400px) rotateX(0deg);
-webkit-transform-style: flat;
opacity: 1;
}
100% {
-webkit-transform: perspective(400px) rotateX(90deg);
transform: perspective(400px) rotateX(90deg);
-webkit-transform-style: flat;
opacity: 1;
}
}
@keyframes flipDown {
0% {
-webkit-transform: perspective(400px) rotateX(0deg);
-ms-transform: perspective(400px) rotateX(0deg);
transform: perspective(400px) rotateX(0deg);
opacity: 1;
}
100% {
-webkit-transform: perspective(400px) rotateX(90deg);
-ms-transform: perspective(400px) rotateX(90deg);
transform: perspective(400px) rotateX(90deg);
opacity: 0;
}
}
.flipDown {
-webkit-animation-name: flipDown;
animation-name: flipDown;
-webkit-backface-visibility: visible !important;
-ms-backface-visibility: visible !important;
backface-visibility: visible !important;
-webkit-transform-Origin: bottom;
-ms-transform-Origin: bottom;
transform-Origin: bottom;
}
jsFiddle
SafariとChromeの違いを確認してください。
私の回転要素は背景に隣接させるのに適していませんでしたが、適用して修正しました
transform: translateZ(1000px);
transform-style: preserve-3d;
回転要素の親に。 Safariは、背景の前面が1000pxであると認識します。
解決策を見つけました。うまくいけば、これは将来の誰かを助けるでしょう。
WebkitのSafariバージョンには「バグ」があることがわかりました。 3D CSSアニメーションの再生中、元のZ-Indexは失われます。代わりに、アニメーションのピースは、DOMの残りのz-indexとは別の別のz-index "グループ"に入れられるようです。
解決策は、何も変更しないwebkit変換を使用してdivでラップすることにより、背景divと壁divを同じz-indexグループに結合することです。これにより、背景と壁がラッパーdivの子になり、それぞれの子のZインデックスが保持されます。
<div id="wrapper" style="-webkit-transform: translate3d(0px, 0px, 0px);">
<div id="wall">
This is the wall
</div>
<div id="background">
This is the background
</div>
</div>
私はそれがこれと同じまたは同様の問題であると信じています:
私はこの問題に遭遇しましたが、背後にあるはずのアイテムの親コンテナーにパースペクティブを追加するまで、何も修正されませんでした。
.wrap{
perspective: 1000px;
}