3Dエンドロール ジェネレーター
CSSとJavaScriptで、映画のオープニングやエンディングのように画面の奥へ向かって流れる立体的な3Dテキストのスクロール演出を生成します。
プレビュー
<!-- 3D演出用外枠ステージ (背景黒・はみ出し防止) -->
<div class="crawl-stage">
<!-- クロールコンテナ (透過マスク適用) -->
<div class="crawl-container">
<!-- スクロールする3Dテキストコンテンツ -->
<div class="crawl-content">
{{scroll_text}}
</div>
</div>
</div>
/* クロール演出の最外枠ステージスタイル */
.crawl-stage {
position: relative;
width: 100%;
height: 400px;
background-color: #000; /* 背景は完全に不透明な黒を維持 */
overflow: hidden; /* はみ出しを完全に防ぐ */
}
/* クロールコンテナ(背景透明・マスク適用) */
.crawl-container {
position: relative;
width: 100%;
height: 100%;
/* 上部に行くほど文字が透過して消えていくグラデーションマスク設定 */
-webkit-mask-image: {{fade_mask_css}};
mask-image: {{fade_mask_css}};
}
/* スクロールする中身のスタイル定義 */
.crawl-content {
position: absolute;
left: -20%; /* 3D回転時に底辺側が広がってもはみ出ないよう左右に十分なマージンを確保 */
right: -20%;
bottom: -450px; /* 1行目が完全に画面外の下側から現れるように開始位置を深く設定 */
text-align: center;
font-weight: bold;
line-height: 1.8;
font-size: {{font_size}}px;
color: {{color}};
/* アニメーションの割り当て */
animation: crawl-animation {{duration}}s linear infinite;
}
/* 下端から奥の上端へ3Dの傾き(perspective + rotateX)を持たせたままスクロールアップしていくキーフレーム */
@keyframes crawl-animation {
0% {
bottom: -450px;
transform: perspective(400px) {{crawl_transform}} translateY(0);
opacity: 1;
}
80% {
opacity: 1;
}
100% {
bottom: 500px;
transform: perspective(400px) {{crawl_transform}} translateY(-400px) scale(0.55);
opacity: 0;
}
}
(() => {
// ページの読み込み完了またはマウント時に、アニメーション時間を強制的にリセットして
// スムーズなスクロールループを実行させるための最小限のスクリプト。
const content = document.querySelector('.crawl-content');
if (content) {
// 初期化および動的なアニメーション時間適用など
content.style.animationPlayState = 'running';
}
})();
機能、使い方
- テキストエリアに入力したメッセージが、奥行きを持った3D空間の奥側へと傾斜しながらスクロールアップしていく演出を作成します。
- 文字サイズ、テキストカラー、落下・上昇するアニメーションの進行時間(スクロール速度)、および3D傾斜度(視錐台のパース強さ)を制御できます。
- アニメーションキーフレームによって、最上部に達したテキストがサイズを小さくしながら自然に消え去るフェードアウトを自動で行います。
コードの説明
perspective()とrotateX()の3Dトランスフォームを組み合わせてコンテナを傾斜させ、立体的な奥行きをCSSのみで完全に表現しています。
@keyframesアニメーションにより、Y軸方向の開始座標を bottom: -100%、終了座標を bottom: 150% に動かすことで、ループ可能な安定したエンドロール処理を実行しています。
linearを指定することで、開始から終了までテキストが同じ速度で一貫して滑らかに進むように等速モーションを設定しています。