アニメーション
CSSだけで作る!ネオンに光る3Dキューブ回転アニメーション
2026/01/23
2026/1/19
3D表現って「Three.jsが必要そう」と思われがちですが、実はCSSだけでもかなり雰囲気のある演出が作れます。
このコードは、ネオンブルーに発光する“立方体(キューブ)”を、preserve-3d+perspectiveで立体として成立させ、ゆっくり回転させるアニメーションです。
背景のアクセント、MV(メインビジュアル)のワンポイント、デモページの飾りにちょうどいい系です。
Preview プレビュー
Code コード
<div class="bg-glow"></div>
<div class="animation-container">
<div class="cube">
<div class="cube-face front">FRONT</div>
<div class="cube-face back">BACK</div>
<div class="cube-face right">RIGHT</div>
<div class="cube-face left">LEFT</div>
<div class="cube-face top">TOP</div>
<div class="cube-face bottom">BOTTOM</div>
</div>
</div>
body {
background-color: #050505;
margin: 0;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
font-family: 'Arial Black', sans-serif;
}
.animation-container {
width: 200px;
height: 200px;
perspective: 1000px;
}
.cube {
width: 100%;
height: 100%;
position: relative;
transform-style: preserve-3d;
animation: cubeRotate 10s infinite linear;
}
.cube-face {
position: absolute;
width: 200px;
height: 200px;
display: flex;
justify-content: center;
align-items: center;
/* 文字の設定: 純白 */
color: #ffffff;
font-weight: bold;
font-size: 28px;
text-transform: uppercase;
/* 文字を白く光らせて際立たせる */
text-shadow: 0 0 10px rgba(255, 255, 255, 0.8), 0 0 20px rgba(255, 255, 255, 0.4);
backface-visibility: visible;
/* 背景グラデーション (#3624ff から #ff3c3c) */
background: linear-gradient(135deg, rgba(54, 36, 255, 0.25), rgba(255, 60, 60, 0.25));
/* 枠線グラデーション */
border: 3px solid;
border-image: linear-gradient(135deg, #3624ff, #ff3c3c) 1;
/* 外側と内側の光(青と赤の混合) */
box-shadow: 0 0 20px rgba(54, 36, 255, 0.4),
inset 0 0 20px rgba(255, 60, 60, 0.4);
}
/* 3D 配置設定 */
.front { transform: rotateY(0deg) translateZ(100px); }
.back { transform: rotateY(180deg) translateZ(100px); }
.right { transform: rotateY(90deg) translateZ(100px); }
.left { transform: rotateY(-90deg) translateZ(100px); }
.top { transform: rotateX(90deg) translateZ(100px); }
.bottom { transform: rotateX(-90deg) translateZ(100px); }
/* 回転アニメーション */
@keyframes cubeRotate {
0% { transform: rotateX(0deg) rotateY(0deg); }
100% { transform: rotateX(360deg) rotateY(360deg); }
}
/* 背景にうっすらと光を配置 */
.bg-glow {
position: absolute;
width: 500px;
height: 500px;
background: radial-gradient(circle, rgba(54, 36, 255, 0.1) 0%, rgba(255, 60, 60, 0.1) 50%, transparent 70%);
filter: blur(80px);
z-index: -1;
}
Explanation 詳しい説明
仕様
このコードは、CSSだけで立体のキューブを作り、ネオン発光させながら回転させるアニメーションです。
JavaScriptや3Dライブラリは使っておらず、ブラウザ標準のCSS機能だけで表現しています。
立体に見える理由は、外側の要素に指定しているperspectiveです。
これによって「手前と奥」が生まれ、平面の要素でも3Dっぽく見えるようになります。
キューブ本体にはpreserve-3dを指定しています。
この設定があることで、6つの面がバラバラにならず、1つの立体として扱われます。
立方体は、6枚の正方形をそれぞれ回転させ、奥方向に押し出すことで作られています。translateZ(100px)は、キューブのサイズ(200px)の半分です。
この「半分ルール」を守ることで、きれいな箱の形になります。
ネオン表現は、枠線・透過背景・影を組み合わせて作っています。
外側と内側の両方に光を入れることで、回転しても立体感が失われにくくなっています。
回転アニメーションは、キューブ全体をX方向とY方向に一定速度で回しているだけです。
シンプルですが、背景演出として使いやすい動きになります。
カスタマイズポイント
サイズ変更
キューブの大きさを変えたら、translateZも必ず半分に変更する
色変更border・box-shadow・text-shadowを同系色にするとネオン感がまとまる
回転速度8sを短くすると速く、長くするとゆったりした動きになる
文字なし表示
テキストを消せば、枠だけの発光キューブとして使える
注意点(最低限)
- 3D表現は負荷がかかるため、表示数は少なめがおすすめ
- サイズ変更時に崩れたら、まず
translateZの値を確認 - チラつきが気になる場合は
will-change: transform;を追加すると改善することがある