2017-09-11 4 views
0

私は2つの異なる角度で無限に回転する3Dアニメーションキューブを作成しました。キューブは当社の新製品test websiteのホームページにあります(下にスクロールすると、ソフトウェアのタイトルの隣にあります)。 Firefoxでは正常に動作しますが、Google ChromeやOperaではキューブは表示されません。そこで、要素を調べて、スタイルメニューの属性の1つにチェックを入れると、キューブはフェイス間にギャップを持って表示されます。 Microsoft Edgeでは、キューブは表示されますが、回転しません。私はWindowsを使っているのでSafariをチェックしていない。アニメーション3DキューブはFirefoxでのみ動作します

また、キューブフェイスの画像はFirefoxでは正しく表示されますが、他のブラウザでは画像が拡大表示され、画像の一部の地震レイヤーしか表示されません。

私はGoogle Chromeを使用して、JSFiddleで問題を再現しようとしました。クラスのcolを100vhに設定すると私のホームページに大きな空きスペースが残るため、私のためにはできません。

この3D回転キューブをすべてのブラウザで作成するにはどうすればよいですか?どんな助けでも大変感謝しています。事前に感謝します!

* { 
 
    margin: 0; 
 
} 
 
html, body { 
 
    height: 100%; 
 
} 
 
body { 
 
    perspective: 25em; 
 
} 
 
.row { 
 
    display: flex; 
 
} 
 
.row::after { 
 
    display: block; 
 
    content: ''; 
 
    clear: both; 
 
} 
 
.col { 
 
    position: relative; 
 
    flex: 1; 
 
} 
 
[class*='cube'] { 
 
    position: absolute; 
 
} 
 
.cube { 
 
    top: 50%; 
 
    left: 50%; 
 
    font-size: 8vmin; 
 
    transform-style: preserve-3d; 
 
    animation: cube 8s linear infinite; 
 
} 
 
.cube-face { 
 
    margin: -2em; 
 
    width: 4em; 
 
    height: 4em; 
 
    backface-visibility: hidden; 
 
} 
 
.cube-face:nth-child(1) { 
 
    transform: translateZ(2em); 
 
    background: url(http://test.dgbes.com/images/cube-face-1.jpg) center/contain no-repeat fixed; 
 
} 
 
.cube-face:nth-child(2) { 
 
    transform: rotateY(90deg) translateZ(2em); 
 
    background: url(http://test.dgbes.com/images/cube-face-2.jpg) center/contain no-repeat fixed; 
 
} 
 
.cube-face:nth-child(3) { 
 
    transform: rotateY(180deg) translateZ(2em); 
 
    background: url(http://test.dgbes.com/images/cube-face-3.jpg) center/contain no-repeat fixed; 
 
} 
 
.cube-face:nth-child(4) { 
 
    transform: rotateY(270deg) translateZ(2em); 
 
    background: url(http://test.dgbes.com/images/cube-face-4.jpg) center/contain no-repeat fixed; 
 
} 
 
.cube-face:nth-child(5) { 
 
    transform: rotateX(90deg) translateZ(2em); 
 
    background: url(http://test.dgbes.com/images/cube-face-5.jpg) center/contain no-repeat fixed; 
 
} 
 
.cube-face:nth-child(6) { 
 
    transform: rotateX(-90deg) translateZ(2em); 
 
    background: url(http://test.dgbes.com/images/cube-face-6.jpg) center/contain no-repeat fixed; 
 
} 
 
@keyframes cube { 
 
\t to { 
 
\t  transform: rotate3d(1, 1, 1, 1turn) rotate3d(1, -1, 1, 1turn); 
 
    } 
 
}
<div class="row"> 
 
    <div class="col"> 
 
     <div class="cube"> 
 
      <div class="cube-face"></div> 
 
      <div class="cube-face"></div> 
 
      <div class="cube-face"></div> 
 
      <div class="cube-face"></div> 
 
      <div class="cube-face"></div> 
 
      <div class="cube-face"></div> 
 
     </div> 
 
    </div> 
 
</div>

+0

実は、私は、両方で勝利10ああ上のChromeとオペラのキューブを参照してください、そしてもう一つすることができます(確実に)何もないが動作する場合、あなたはまた、WebGLのに頼ることができ代わりに。 – domsson

答えて

1

どうやら私は、キューブ面に固定された位置を除去することにより、GoogleのChromeとOperaのために問題を修正しました。問題はまだMicrosoft Edgeでは解決されていません。

* { 
 
    margin: 0; 
 
} 
 
body { 
 
    height: 100vh; 
 
} 
 
[class*=cube] { 
 
    position: absolute; 
 
} 
 
.cube { 
 
    top: 50%; 
 
    left: 50%; 
 
    font-size: 8vmin; 
 
    transform-style: preserve-3d; 
 
    animation: cube 8s linear infinite; 
 
} 
 
.cube-face { 
 
    margin: -2em; 
 
    width: 4em; 
 
    height: 4em; 
 
    backface-visibility: hidden; 
 
} 
 
.cube-face:nth-child(1) { 
 
    transform: translateZ(2em); 
 
    background: url(http://test.dgbes.com/images/cube-face-1.jpg) center/contain no-repeat; 
 
} 
 
.cube-face:nth-child(2) { 
 
    transform: rotateY(90deg) translateZ(2em); 
 
    background: url(http://test.dgbes.com/images/cube-face-2.jpg) center/contain no-repeat; 
 
} 
 
.cube-face:nth-child(3) { 
 
    transform: rotateY(180deg) translateZ(2em); 
 
    background: url(http://test.dgbes.com/images/cube-face-3.jpg) center/contain no-repeat; 
 
} 
 
.cube-face:nth-child(4) { 
 
    transform: rotateY(270deg) translateZ(2em); 
 
    background: url(http://test.dgbes.com/images/cube-face-4.jpg) center/contain no-repeat; 
 
} 
 
.cube-face:nth-child(5) { 
 
    transform: rotateX(90deg) translateZ(2em); 
 
    background: url(http://test.dgbes.com/images/cube-face-5.jpg) center/contain no-repeat; 
 
} 
 
.cube-face:nth-child(6) { 
 
    transform: rotateX(-90deg) translateZ(2em); 
 
    background: url(http://test.dgbes.com/images/cube-face-6.jpg) center/contain no-repeat; 
 
} 
 
@keyframes cube { 
 
\t to { 
 
\t  transform: rotate3d(1, 1, 1, 1turn) rotate3d(1, -1, 1, 1turn); 
 
    } 
 
}
<div class="cube"> 
 
    <div class="cube-face"></div> 
 
    <div class="cube-face"></div> 
 
    <div class="cube-face"></div> 
 
    <div class="cube-face"></div> 
 
    <div class="cube-face"></div> 
 
    <div class="cube-face"></div> 
 
</div>

関連する問題