スプリット・ヒーロー
左にキャッチコピーと2つのCTA、右に浮遊するダッシュボードのUIカードとブロブ背景を配置したスプリット構成。SaaSやプロダクトLPの導入直後に置く定番ヒーローです。
ライブデモ
コード
HTML
<!-- スプリット・ヒーロー:左にキャッチ+サブ+CTA2つ、右に浮遊するダッシュボードUIカードとブロブ背景 -->
<section class="hs">
<div class="hs__bg" aria-hidden="true"></div>
<div class="hs__inner">
<div class="hs__copy">
<span class="hs__kicker">NEW · Workspace Analytics</span>
<h1 class="hs__title">チームの成果を、<br>ひと目で見える化する。</h1>
<p class="hs__sub">散らばったデータを1枚のダッシュボードに集約。導入は最短当日、初期費用はかかりません。</p>
<div class="hs__cta">
<a class="hs__btn hs__btn--primary" href="#" onclick="return false">無料ではじめる</a>
<a class="hs__btn hs__btn--ghost" href="#" onclick="return false">デモを見る →</a>
</div>
</div>
<div class="hs__visual">
<div class="hs__orb hs__orb--a" aria-hidden="true"></div>
<div class="hs__orb hs__orb--b" aria-hidden="true"></div>
<div class="hs__card" role="img" aria-label="ダッシュボードのイメージ">
<div class="hs__card-head">
<span class="hs__dot"></span><span class="hs__dot"></span><span class="hs__dot"></span>
</div>
<div class="hs__card-stat">
<span class="hs__stat-label">今月の成果</span>
<span class="hs__stat-num">+128%</span>
</div>
<div class="hs__bars" aria-hidden="true">
<i style="--h:38%"></i><i style="--h:62%"></i><i style="--h:48%"></i>
<i style="--h:80%"></i><i style="--h:66%"></i><i style="--h:92%"></i>
</div>
<div class="hs__badge">達成率 92%</div>
</div>
</div>
</div>
</section>
CSS
* { box-sizing: border-box; }
body {
margin: 0;
display: block;
background: #f6f7fb;
font-family: "Segoe UI", "Hiragino Sans", system-ui, sans-serif;
}
/* ルート:全幅フル、左右分割の土台。実寸は詰め、min-height+centerで余白を吸収する */
.hs {
position: relative;
width: 100%;
min-height: 100vh;
overflow: hidden;
background: #f6f7fb;
color: #16151f;
}
/* ゆっくり漂うメッシュ背景(生きて見える演出) */
.hs__bg {
position: absolute; inset: 0;
background:
radial-gradient(38% 45% at 82% 12%, rgba(124, 58, 237, .16), transparent 60%),
radial-gradient(32% 40% at 92% 78%, rgba(79, 70, 229, .14), transparent 65%);
background-repeat: no-repeat;
animation: hsDrift 16s ease-in-out infinite alternate;
}
@keyframes hsDrift {
0% { background-position: 0% 0%, 0% 0%; }
100% { background-position: -6% 4%, 4% -5%; }
}
.hs__inner {
position: relative; z-index: 1;
max-width: 1160px; margin: 0 auto;
min-height: 100vh;
padding: 34px 28px;
display: grid;
grid-template-columns: 1.05fr 1fr;
align-items: center;
gap: 28px;
}
.hs__kicker {
display: inline-block; padding: 6px 14px; border-radius: 999px;
background: #fff; border: 1px solid #e3e1f5;
font-size: 11px; font-weight: 700; letter-spacing: .12em; color: #6d28d9;
box-shadow: 0 2px 10px rgba(76, 29, 149, .06);
}
.hs__title {
margin: 16px 0 0; font-size: clamp(28px, 3.6vw, 40px); font-weight: 800;
line-height: 1.26; letter-spacing: -.01em; color: #16151f;
}
.hs__sub {
margin: 14px 0 0; max-width: 420px; font-size: 15px; line-height: 1.7; color: #56536b;
}
.hs__cta { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 22px; }
.hs__btn {
display: inline-flex; align-items: center; justify-content: center;
padding: 12px 24px; border-radius: 12px;
font-size: 14px; font-weight: 700; text-decoration: none;
transition: transform .2s ease, box-shadow .2s ease, background .2s ease, border-color .2s ease;
}
.hs__btn--primary {
color: #fff; background: linear-gradient(135deg, #6d28d9, #4f46e5);
box-shadow: 0 10px 24px rgba(79, 70, 229, .32);
}
.hs__btn--primary:hover { transform: translateY(-2px); box-shadow: 0 14px 30px rgba(79, 70, 229, .4); }
.hs__btn--ghost {
color: #342f4d; background: #fff; border: 1px solid #e1dff0;
}
.hs__btn--ghost:hover { border-color: #c9c4e6; transform: translateY(-2px); }
.hs__visual { position: relative; display: grid; place-items: center; }
.hs__orb {
position: absolute; border-radius: 50%; filter: blur(2px); opacity: .55;
animation: hsFloat 7s ease-in-out infinite;
}
.hs__orb--a { width: 180px; height: 180px; right: 6%; top: 2%; background: radial-gradient(circle at 30% 30%, #a78bfa, transparent 70%); }
.hs__orb--b { width: 130px; height: 130px; left: 2%; bottom: 4%; background: radial-gradient(circle at 30% 30%, #67e8f9, transparent 70%); animation-delay: -3s; }
@keyframes hsFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-16px); } }
.hs__card {
position: relative; z-index: 1; width: min(300px, 92%);
background: #ffffff; border-radius: 18px; padding: 16px;
box-shadow: 0 24px 48px rgba(30, 20, 70, .16), 0 2px 6px rgba(30, 20, 70, .06);
border: 1px solid #eeecf9;
animation: hsCard 6s ease-in-out infinite;
}
@keyframes hsCard { 0%, 100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-10px) rotate(.4deg); } }
.hs__card-head { display: flex; gap: 6px; margin-bottom: 12px; }
.hs__dot { width: 9px; height: 9px; border-radius: 50%; background: #e3e1f0; }
.hs__dot:nth-child(1) { background: #f87171; }
.hs__dot:nth-child(2) { background: #fbbf24; }
.hs__dot:nth-child(3) { background: #34d399; }
.hs__card-stat { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 12px; }
.hs__stat-label { font-size: 11.5px; color: #8b87a0; }
.hs__stat-num { font-size: 23px; font-weight: 800; color: #16151f; }
.hs__bars { display: flex; align-items: flex-end; gap: 7px; height: 54px; margin-bottom: 10px; }
.hs__bars i { flex: 1; height: var(--h); border-radius: 5px 5px 2px 2px; background: linear-gradient(180deg, #a78bfa, #6d28d9); }
.hs__badge {
display: inline-block; font-size: 11.5px; font-weight: 700; color: #166534;
background: #dcfce7; padding: 5px 11px; border-radius: 999px;
}
@media (max-width: 720px) {
.hs__inner { grid-template-columns: 1fr; padding: 26px 22px 24px; gap: 20px; min-height: 0; }
.hs__copy { order: 1; }
.hs__visual { order: 2; }
.hs__title { font-size: clamp(24px, 6.4vw, 30px); }
/* モバイルはビジュアルを軽量化して、コピー+CTAを確実に見せる */
.hs__card { width: min(240px, 82%); padding: 13px; }
.hs__bars, .hs__badge { display: none; }
}
@media (prefers-reduced-motion: reduce) {
.hs__bg, .hs__orb, .hs__card { animation: none; }
}
JavaScript
// スプリット・ヒーロー:背景の漂うグラデ/浮遊オーブ/カードの上下は全てCSSアニメーションで完結。
// JSでの追加処理は不要(IIFEのみ・将来の拡張用に空で保持)。
(() => {})();
🤖 AIエージェント用プロンプト
このままコピーしてAIに貼り付け「追加する場所」だけ書き換えればOK
あなたは熟練のフロントエンドエンジニアです。私のWebサイトに「スプリット・ヒーロー」の効果を追加してください。
# 追加してほしい効果
スプリット・ヒーロー(ヒーロー & タイトル)
左にキャッチコピーと2つのCTA、右に浮遊するダッシュボードのUIカードとブロブ背景を配置したスプリット構成。SaaSやプロダクトLPの導入直後に置く定番ヒーローです。
# 追加する場所
👉【ここに対象箇所を記入:例「トップのヒーローセクション」「お問い合わせボタン」「記事カードの一覧」など】
# 参考実装(この見た目・挙動を再現してください)
【HTML】
<!-- スプリット・ヒーロー:左にキャッチ+サブ+CTA2つ、右に浮遊するダッシュボードUIカードとブロブ背景 -->
<section class="hs">
<div class="hs__bg" aria-hidden="true"></div>
<div class="hs__inner">
<div class="hs__copy">
<span class="hs__kicker">NEW · Workspace Analytics</span>
<h1 class="hs__title">チームの成果を、<br>ひと目で見える化する。</h1>
<p class="hs__sub">散らばったデータを1枚のダッシュボードに集約。導入は最短当日、初期費用はかかりません。</p>
<div class="hs__cta">
<a class="hs__btn hs__btn--primary" href="#" onclick="return false">無料ではじめる</a>
<a class="hs__btn hs__btn--ghost" href="#" onclick="return false">デモを見る →</a>
</div>
</div>
<div class="hs__visual">
<div class="hs__orb hs__orb--a" aria-hidden="true"></div>
<div class="hs__orb hs__orb--b" aria-hidden="true"></div>
<div class="hs__card" role="img" aria-label="ダッシュボードのイメージ">
<div class="hs__card-head">
<span class="hs__dot"></span><span class="hs__dot"></span><span class="hs__dot"></span>
</div>
<div class="hs__card-stat">
<span class="hs__stat-label">今月の成果</span>
<span class="hs__stat-num">+128%</span>
</div>
<div class="hs__bars" aria-hidden="true">
<i style="--h:38%"></i><i style="--h:62%"></i><i style="--h:48%"></i>
<i style="--h:80%"></i><i style="--h:66%"></i><i style="--h:92%"></i>
</div>
<div class="hs__badge">達成率 92%</div>
</div>
</div>
</div>
</section>
【CSS】
* { box-sizing: border-box; }
body {
margin: 0;
display: block;
background: #f6f7fb;
font-family: "Segoe UI", "Hiragino Sans", system-ui, sans-serif;
}
/* ルート:全幅フル、左右分割の土台。実寸は詰め、min-height+centerで余白を吸収する */
.hs {
position: relative;
width: 100%;
min-height: 100vh;
overflow: hidden;
background: #f6f7fb;
color: #16151f;
}
/* ゆっくり漂うメッシュ背景(生きて見える演出) */
.hs__bg {
position: absolute; inset: 0;
background:
radial-gradient(38% 45% at 82% 12%, rgba(124, 58, 237, .16), transparent 60%),
radial-gradient(32% 40% at 92% 78%, rgba(79, 70, 229, .14), transparent 65%);
background-repeat: no-repeat;
animation: hsDrift 16s ease-in-out infinite alternate;
}
@keyframes hsDrift {
0% { background-position: 0% 0%, 0% 0%; }
100% { background-position: -6% 4%, 4% -5%; }
}
.hs__inner {
position: relative; z-index: 1;
max-width: 1160px; margin: 0 auto;
min-height: 100vh;
padding: 34px 28px;
display: grid;
grid-template-columns: 1.05fr 1fr;
align-items: center;
gap: 28px;
}
.hs__kicker {
display: inline-block; padding: 6px 14px; border-radius: 999px;
background: #fff; border: 1px solid #e3e1f5;
font-size: 11px; font-weight: 700; letter-spacing: .12em; color: #6d28d9;
box-shadow: 0 2px 10px rgba(76, 29, 149, .06);
}
.hs__title {
margin: 16px 0 0; font-size: clamp(28px, 3.6vw, 40px); font-weight: 800;
line-height: 1.26; letter-spacing: -.01em; color: #16151f;
}
.hs__sub {
margin: 14px 0 0; max-width: 420px; font-size: 15px; line-height: 1.7; color: #56536b;
}
.hs__cta { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 22px; }
.hs__btn {
display: inline-flex; align-items: center; justify-content: center;
padding: 12px 24px; border-radius: 12px;
font-size: 14px; font-weight: 700; text-decoration: none;
transition: transform .2s ease, box-shadow .2s ease, background .2s ease, border-color .2s ease;
}
.hs__btn--primary {
color: #fff; background: linear-gradient(135deg, #6d28d9, #4f46e5);
box-shadow: 0 10px 24px rgba(79, 70, 229, .32);
}
.hs__btn--primary:hover { transform: translateY(-2px); box-shadow: 0 14px 30px rgba(79, 70, 229, .4); }
.hs__btn--ghost {
color: #342f4d; background: #fff; border: 1px solid #e1dff0;
}
.hs__btn--ghost:hover { border-color: #c9c4e6; transform: translateY(-2px); }
.hs__visual { position: relative; display: grid; place-items: center; }
.hs__orb {
position: absolute; border-radius: 50%; filter: blur(2px); opacity: .55;
animation: hsFloat 7s ease-in-out infinite;
}
.hs__orb--a { width: 180px; height: 180px; right: 6%; top: 2%; background: radial-gradient(circle at 30% 30%, #a78bfa, transparent 70%); }
.hs__orb--b { width: 130px; height: 130px; left: 2%; bottom: 4%; background: radial-gradient(circle at 30% 30%, #67e8f9, transparent 70%); animation-delay: -3s; }
@keyframes hsFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-16px); } }
.hs__card {
position: relative; z-index: 1; width: min(300px, 92%);
background: #ffffff; border-radius: 18px; padding: 16px;
box-shadow: 0 24px 48px rgba(30, 20, 70, .16), 0 2px 6px rgba(30, 20, 70, .06);
border: 1px solid #eeecf9;
animation: hsCard 6s ease-in-out infinite;
}
@keyframes hsCard { 0%, 100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-10px) rotate(.4deg); } }
.hs__card-head { display: flex; gap: 6px; margin-bottom: 12px; }
.hs__dot { width: 9px; height: 9px; border-radius: 50%; background: #e3e1f0; }
.hs__dot:nth-child(1) { background: #f87171; }
.hs__dot:nth-child(2) { background: #fbbf24; }
.hs__dot:nth-child(3) { background: #34d399; }
.hs__card-stat { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 12px; }
.hs__stat-label { font-size: 11.5px; color: #8b87a0; }
.hs__stat-num { font-size: 23px; font-weight: 800; color: #16151f; }
.hs__bars { display: flex; align-items: flex-end; gap: 7px; height: 54px; margin-bottom: 10px; }
.hs__bars i { flex: 1; height: var(--h); border-radius: 5px 5px 2px 2px; background: linear-gradient(180deg, #a78bfa, #6d28d9); }
.hs__badge {
display: inline-block; font-size: 11.5px; font-weight: 700; color: #166534;
background: #dcfce7; padding: 5px 11px; border-radius: 999px;
}
@media (max-width: 720px) {
.hs__inner { grid-template-columns: 1fr; padding: 26px 22px 24px; gap: 20px; min-height: 0; }
.hs__copy { order: 1; }
.hs__visual { order: 2; }
.hs__title { font-size: clamp(24px, 6.4vw, 30px); }
/* モバイルはビジュアルを軽量化して、コピー+CTAを確実に見せる */
.hs__card { width: min(240px, 82%); padding: 13px; }
.hs__bars, .hs__badge { display: none; }
}
@media (prefers-reduced-motion: reduce) {
.hs__bg, .hs__orb, .hs__card { animation: none; }
}
【JavaScript】
// スプリット・ヒーロー:背景の漂うグラデ/浮遊オーブ/カードの上下は全てCSSアニメーションで完結。
// JSでの追加処理は不要(IIFEのみ・将来の拡張用に空で保持)。
(() => {})();
# 外部ライブラリ
なし(追加ライブラリ不要)
# 守ってほしいこと
- 既存のHTML構造・レイアウト・デザインを壊さないこと。必要に応じてクラス名・色・サイズを私のサイトに合わせて調整してよい。
- クラス名やidが既存と衝突しないよう、必要なら接頭辞で名前空間を分けること。
- レスポンシブ対応と prefers-reduced-motion への配慮を入れること。
- 私のサイトのフレームワーク(React / Vue / 素のHTML など)に合わせて実装すること。不明な場合は素のHTML/CSS/JSで提示し、組み込み手順も説明すること。
- 変更後の確認手順も簡潔に教えてください。