オーロラ光背景
ぼかした光の帯をゆっくり揺らし、星空とともに夜空のオーロラを再現するCSS背景。ダークテーマのヒーローに映えます。
ライブデモ
使用例(お題: アイドルグループ Sakura)
この技法を「アイドルグループ Sakura」というテーマのダミーサイトで実際に使った例です。
HTML
<!-- Sakura:オーロラ夜空をMV背景にしたライブ告知 -->
<section class="sa-stage">
<!-- ★主役:揺れる光の帯+星空のオーロラ背景 -->
<div class="sa-sky" aria-hidden="true">
<span class="sa-band sa-band--1"></span>
<span class="sa-band sa-band--2"></span>
<span class="sa-band sa-band--3"></span>
<div class="sa-stars" id="saStars"></div>
</div>
<div class="sa-inner">
<span class="sa-eyebrow">Sakura 2nd LIVE TOUR</span>
<h1 class="sa-title">星降る夜の<br>桜物語</h1>
<p class="sa-date">2026.07.18 SAT ・ 開演 18:00</p>
<p class="sa-place">さくらアリーナ ・ 全席指定</p>
<button class="sa-btn" type="button" id="saBtn">先行抽選に申し込む</button>
</div>
</section>
CSS
/* Sakura:桜ピンクのオーロラが揺れる夜空のライブ告知 */
* { box-sizing: border-box; margin: 0; padding: 0; }
.sa-stage {
position: relative;
min-height: 400px;
height: 400px;
overflow: hidden;
/* 夜空の下地 */
background: linear-gradient(180deg, #1a1026 0%, #241433 55%, #2e1838 100%);
color: #fff;
font-family: "Hiragino Kaku Gothic ProN", "Segoe UI", system-ui, sans-serif;
}
/* ★主役:オーロラの光の帯(ぼかしてゆっくり揺らす) */
.sa-sky { position: absolute; inset: 0; z-index: 0; overflow: hidden; }
.sa-band {
position: absolute;
left: -20%;
width: 140%;
height: 220px;
filter: blur(46px);
opacity: 0.7;
mix-blend-mode: screen;
border-radius: 50%;
}
.sa-band--1 {
top: -40px;
background: linear-gradient(90deg, transparent, #ff8fc4, #ffd1e0, transparent);
animation: saWave1 11s ease-in-out infinite;
}
.sa-band--2 {
top: 40px;
background: linear-gradient(90deg, transparent, #c08bff, #ff9ed4, transparent);
animation: saWave2 14s ease-in-out infinite;
}
.sa-band--3 {
top: 110px;
height: 180px;
background: linear-gradient(90deg, transparent, #ffb3d9, #b39cff, transparent);
animation: saWave1 17s ease-in-out infinite reverse;
}
@keyframes saWave1 {
0%, 100% { transform: translateX(-6%) skewY(-3deg) scaleY(1); }
50% { transform: translateX(8%) skewY(3deg) scaleY(1.18); }
}
@keyframes saWave2 {
0%, 100% { transform: translateX(7%) skewY(2deg) scaleY(1.1); }
50% { transform: translateX(-7%) skewY(-2deg) scaleY(0.92); }
}
/* 星(JSで点を生成) */
.sa-stars { position: absolute; inset: 0; }
.sa-star {
position: absolute;
width: 2px; height: 2px;
border-radius: 50%;
background: #fff;
animation: saTwinkle 3s ease-in-out infinite;
}
@keyframes saTwinkle {
0%, 100% { opacity: 0.2; }
50% { opacity: 1; }
}
.sa-inner {
position: relative;
z-index: 1;
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
padding: 0 24px;
}
.sa-eyebrow {
font-size: 11px;
font-weight: 700;
letter-spacing: 0.28em;
color: #ffc6df;
}
.sa-title {
margin-top: 12px;
font-size: 42px;
font-weight: 800;
line-height: 1.16;
letter-spacing: 0.04em;
text-shadow: 0 0 30px rgba(255,143,196,0.6), 0 4px 20px rgba(0,0,0,0.5);
}
.sa-date { margin-top: 16px; font-size: 14px; font-weight: 700; color: #fff; }
.sa-place { margin-top: 4px; font-size: 12px; color: rgba(255,255,255,0.8); }
.sa-btn {
margin-top: 20px;
font: inherit;
font-size: 13px;
font-weight: 700;
color: #4a1230;
background: linear-gradient(135deg, #ffd1e0, #ff9ec6);
border: none;
padding: 12px 26px;
border-radius: 999px;
cursor: pointer;
box-shadow: 0 8px 24px rgba(255,143,196,0.55);
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.sa-btn:hover { transform: translateY(-2px); box-shadow: 0 12px 30px rgba(255,143,196,0.7); }
.sa-btn:active { transform: scale(0.98); }
@media (prefers-reduced-motion: reduce) {
.sa-band, .sa-star { animation: none; }
.sa-btn { transition: none; }
}
JavaScript
// 夜空に星をランダム配置し、ライブ申込みCTAに反応を付ける
(() => {
const stars = document.getElementById("saStars");
if (stars) {
const reduce = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
const count = 46;
const frag = document.createDocumentFragment();
// 星をランダムな位置・明滅タイミングで生成
for (let i = 0; i < count; i++) {
const s = document.createElement("span");
s.className = "sa-star";
s.style.left = (Math.random() * 100).toFixed(2) + "%";
s.style.top = (Math.random() * 70).toFixed(2) + "%"; // 上空に寄せる
const size = (Math.random() * 1.6 + 1).toFixed(1);
s.style.width = size + "px";
s.style.height = size + "px";
if (reduce) {
s.style.animation = "none";
s.style.opacity = "0.7";
} else {
s.style.animationDelay = (-Math.random() * 3).toFixed(2) + "s";
}
frag.appendChild(s);
}
stars.appendChild(frag);
}
// 先行抽選ボタンのフィードバック
const btn = document.getElementById("saBtn");
if (btn) {
btn.addEventListener("click", () => {
const label = btn.textContent;
btn.textContent = "受付しました ♪";
btn.disabled = true;
setTimeout(() => { btn.textContent = label; btn.disabled = false; }, 1600);
});
}
})();
コード
HTML
<!-- オーロラ光背景: ぼかした光のリボンを重ねて夜空のオーロラを表現 -->
<div class="aurora-stage">
<div class="aurora-sky">
<span class="aurora-band band-1"></span>
<span class="aurora-band band-2"></span>
<span class="aurora-band band-3"></span>
</div>
<div class="aurora-stars"></div>
<div class="aurora-content">
<h1 class="aurora-title">Aurora</h1>
<p class="aurora-sub">ぼかした光の帯をゆっくり揺らし、夜空のオーロラを再現。SaaSのヒーローに映えます。</p>
</div>
</div>
CSS
/* 暗い夜空に、ぼかした光の帯を重ねて揺らす */
* { box-sizing: border-box; margin: 0; padding: 0; }
.aurora-stage {
position: relative;
min-height: 360px;
overflow: hidden;
display: grid;
place-items: center;
font-family: "Segoe UI", "Hiragino Sans", system-ui, sans-serif;
background: linear-gradient(180deg, #050a1f 0%, #0a1230 60%, #0d1840 100%);
}
.aurora-sky {
position: absolute;
inset: -25%;
filter: blur(48px) saturate(150%);
}
/* 光の帯: 細長いグラデを傾けて配置し、波打たせる */
.aurora-band {
position: absolute;
left: -10%;
width: 120%;
height: 180px;
border-radius: 50%;
opacity: 0.7;
mix-blend-mode: screen;
transform-origin: center;
}
.band-1 {
top: 18%;
background: linear-gradient(90deg, transparent, #00ffa3 30%, #00b3ff 70%, transparent);
animation: aurora-wave1 11s ease-in-out infinite;
}
.band-2 {
top: 34%;
background: linear-gradient(90deg, transparent, #7b5cff 25%, #00ffc8 75%, transparent);
animation: aurora-wave2 14s ease-in-out infinite;
}
.band-3 {
top: 8%;
background: linear-gradient(90deg, transparent, #ff6ec4 30%, #845ec2 70%, transparent);
opacity: 0.5;
animation: aurora-wave3 18s ease-in-out infinite;
}
@keyframes aurora-wave1 {
0%, 100% { transform: rotate(-6deg) translateX(-4%) scaleY(1); }
50% { transform: rotate(4deg) translateX(6%) scaleY(1.3); }
}
@keyframes aurora-wave2 {
0%, 100% { transform: rotate(5deg) translateX(5%) scaleY(1.1); }
50% { transform: rotate(-5deg) translateX(-6%) scaleY(0.85); }
}
@keyframes aurora-wave3 {
0%, 100% { transform: rotate(-3deg) translateX(3%) scaleY(0.9); }
50% { transform: rotate(6deg) translateX(-5%) scaleY(1.25); }
}
/* 星空: 小さな点を radial-gradient で散らす */
.aurora-stars {
position: absolute;
inset: 0;
background-image:
radial-gradient(1.5px 1.5px at 20% 30%, #fff, transparent),
radial-gradient(1px 1px at 70% 20%, #fff, transparent),
radial-gradient(1.5px 1.5px at 40% 70%, #cfe6ff, transparent),
radial-gradient(1px 1px at 85% 60%, #fff, transparent),
radial-gradient(1px 1px at 55% 45%, #fff, transparent),
radial-gradient(1.5px 1.5px at 10% 80%, #fff, transparent);
opacity: 0.8;
}
.aurora-content {
position: relative;
z-index: 3;
text-align: center;
color: #eaf3ff;
padding: 0 24px;
max-width: 500px;
}
.aurora-title {
font-size: 46px;
font-weight: 800;
letter-spacing: 0.06em;
text-shadow: 0 0 30px rgba(0, 255, 200, 0.45);
}
.aurora-sub {
margin-top: 14px;
font-size: 14px;
line-height: 1.85;
color: rgba(234, 243, 255, 0.82);
}
@media (prefers-reduced-motion: reduce) {
.aurora-band { animation: none; }
}
🤖 AIエージェント用プロンプト
このままコピーしてAIに貼り付け「追加する場所」だけ書き換えればOK
あなたは熟練のフロントエンドエンジニアです。私のWebサイトに「オーロラ光背景」の効果を追加してください。
# 追加してほしい効果
オーロラ光背景(背景 & グラデーション)
ぼかした光の帯をゆっくり揺らし、星空とともに夜空のオーロラを再現するCSS背景。ダークテーマのヒーローに映えます。
# 追加する場所
👉【ここに対象箇所を記入:例「トップのヒーローセクション」「お問い合わせボタン」「記事カードの一覧」など】
# 参考実装(この見た目・挙動を再現してください)
【HTML】
<!-- オーロラ光背景: ぼかした光のリボンを重ねて夜空のオーロラを表現 -->
<div class="aurora-stage">
<div class="aurora-sky">
<span class="aurora-band band-1"></span>
<span class="aurora-band band-2"></span>
<span class="aurora-band band-3"></span>
</div>
<div class="aurora-stars"></div>
<div class="aurora-content">
<h1 class="aurora-title">Aurora</h1>
<p class="aurora-sub">ぼかした光の帯をゆっくり揺らし、夜空のオーロラを再現。SaaSのヒーローに映えます。</p>
</div>
</div>
【CSS】
/* 暗い夜空に、ぼかした光の帯を重ねて揺らす */
* { box-sizing: border-box; margin: 0; padding: 0; }
.aurora-stage {
position: relative;
min-height: 360px;
overflow: hidden;
display: grid;
place-items: center;
font-family: "Segoe UI", "Hiragino Sans", system-ui, sans-serif;
background: linear-gradient(180deg, #050a1f 0%, #0a1230 60%, #0d1840 100%);
}
.aurora-sky {
position: absolute;
inset: -25%;
filter: blur(48px) saturate(150%);
}
/* 光の帯: 細長いグラデを傾けて配置し、波打たせる */
.aurora-band {
position: absolute;
left: -10%;
width: 120%;
height: 180px;
border-radius: 50%;
opacity: 0.7;
mix-blend-mode: screen;
transform-origin: center;
}
.band-1 {
top: 18%;
background: linear-gradient(90deg, transparent, #00ffa3 30%, #00b3ff 70%, transparent);
animation: aurora-wave1 11s ease-in-out infinite;
}
.band-2 {
top: 34%;
background: linear-gradient(90deg, transparent, #7b5cff 25%, #00ffc8 75%, transparent);
animation: aurora-wave2 14s ease-in-out infinite;
}
.band-3 {
top: 8%;
background: linear-gradient(90deg, transparent, #ff6ec4 30%, #845ec2 70%, transparent);
opacity: 0.5;
animation: aurora-wave3 18s ease-in-out infinite;
}
@keyframes aurora-wave1 {
0%, 100% { transform: rotate(-6deg) translateX(-4%) scaleY(1); }
50% { transform: rotate(4deg) translateX(6%) scaleY(1.3); }
}
@keyframes aurora-wave2 {
0%, 100% { transform: rotate(5deg) translateX(5%) scaleY(1.1); }
50% { transform: rotate(-5deg) translateX(-6%) scaleY(0.85); }
}
@keyframes aurora-wave3 {
0%, 100% { transform: rotate(-3deg) translateX(3%) scaleY(0.9); }
50% { transform: rotate(6deg) translateX(-5%) scaleY(1.25); }
}
/* 星空: 小さな点を radial-gradient で散らす */
.aurora-stars {
position: absolute;
inset: 0;
background-image:
radial-gradient(1.5px 1.5px at 20% 30%, #fff, transparent),
radial-gradient(1px 1px at 70% 20%, #fff, transparent),
radial-gradient(1.5px 1.5px at 40% 70%, #cfe6ff, transparent),
radial-gradient(1px 1px at 85% 60%, #fff, transparent),
radial-gradient(1px 1px at 55% 45%, #fff, transparent),
radial-gradient(1.5px 1.5px at 10% 80%, #fff, transparent);
opacity: 0.8;
}
.aurora-content {
position: relative;
z-index: 3;
text-align: center;
color: #eaf3ff;
padding: 0 24px;
max-width: 500px;
}
.aurora-title {
font-size: 46px;
font-weight: 800;
letter-spacing: 0.06em;
text-shadow: 0 0 30px rgba(0, 255, 200, 0.45);
}
.aurora-sub {
margin-top: 14px;
font-size: 14px;
line-height: 1.85;
color: rgba(234, 243, 255, 0.82);
}
@media (prefers-reduced-motion: reduce) {
.aurora-band { animation: none; }
}
# 外部ライブラリ
なし(追加ライブラリ不要)
# 守ってほしいこと
- 既存のHTML構造・レイアウト・デザインを壊さないこと。必要に応じてクラス名・色・サイズを私のサイトに合わせて調整してよい。
- クラス名やidが既存と衝突しないよう、必要なら接頭辞で名前空間を分けること。
- レスポンシブ対応と prefers-reduced-motion への配慮を入れること。
- 私のサイトのフレームワーク(React / Vue / 素のHTML など)に合わせて実装すること。不明な場合は素のHTML/CSS/JSで提示し、組み込み手順も説明すること。
- 変更後の確認手順も簡潔に教えてください。