オーガニック・シェイプ フッター(ブロブ地)

様式名: オーガニック・シェイプ / フッター

フッターブロブ曲線パステルアニメーション
⧉ 別タブで開く

「壊れた例」を押すと、この様式が成立しなくなる条件を実物で見られます。

特徴 — なぜ効くか

  • 直線・直角・正円を避け、不規則な曲線(ブロブ)で有機的な空気をつくる。淡いパステルと組むことが多い
  • 非対称・大小差・重なりが成立条件。左右対称で規則的な曲線だと『ただの丸背景』に転ぶ
  • border-radius の8値指定か SVG パスで作る。SVG のベジェが最も自然だが、CSS だけでも疑似ブロブは作れる
  • 静止だと硬く見えやすく、ごく緩やかな変形アニメで『生きた質感』が出る。ただし常時の動きは配慮が要る
  • 2025年時点の現役トレンド。単純なブロブから、葉・水流など複雑な有機形状へ移行しつつある

実装メモ — 踏んだ罠

  • ブロブは border-radius の8値指定(例 62% 38% 55% 45% / 58% 52% 48% 42%)。前半4値が水平、後半4値が垂直の半径で、非対称にするほど有機的になる
  • filter:blur(20〜30px) で縁を柔らかくし、地と穏やかに溶かす。blur すると縁は地とブロブの中間色になるが、両端で AA を満たしていれば中間も満たす
  • 大小差と重なりで単調さを消す。同サイズの単純な繰り返しは『水玉』に見えて有機的にならない
  • 【自分で実測した数値】淡い地 #edf0ee と3色のブロブ(緑 #cfe3d4/ピーチ #f3ddd0/青 #d5e0ee)すべての上で、見出し・リンク #243038 は 10.03〜11.77:1、サブ #4a5a63 は各ブロブ単色上で 5.31〜6.24:1。ただし blur で地とブロブが混ざった描画上の実際の最暗部(採取 #d2d6d5)では見出し 9.21:1/サブ 4.88:1 まで下がる。理論値でなく描画採取値で確認し、最暗部でも AA を保つよう色を選んだ
  • 文字はブロブの背後ではなく前面の別レイヤに置き(z-index)、ブロブは背景装飾に徹する。テキストをブロブの曲線に沿わせない(和文は間延びする)
  • 動きを付けるなら @media (prefers-reduced-motion:reduce) で必ず停止する。常時変形は WCAG 2.3.3 の配慮対象

使いどころ / 使ってはいけない場面

壊れる条件

コントラスト実測

対象文字色背景実効背景判定
見出し・リンク(描画の最暗部:採取 #d2d6d5)#243038#edf0ee#d2d6d59.21:1AA 合格
見出し・リンク(地)#243038#edf0ee#edf0ee11.77:1AA 合格
サブテキスト(描画の最暗部:採取 #d2d6d5)#4a5a63#edf0ee#d2d6d54.88:1AA 合格(余裕なし)
購読ボタン(白文字 on 深緑)#ffffff#2c6149#2c61497.21:1AA 合格

アクセシビリティ

スマホへの落とし方

ブラウザ対応

関連するパーツ

コードを見る
<!doctype html>
<html lang="ja"><head><meta charset="utf-8"><title>オーガニック・シェイプ フッター デモ</title><style>
*{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#edf0ee;
  --ink:#243038;      /* 見出し・リンク。全ブロブ上で 10:1 以上(実測) */
  --sub:#4a5a63;      /* サブ。全ブロブ上で 5:1 以上 */
  --cta:#2c6149;      /* 深緑。白文字で 7.21:1 */
}
body{background:var(--bg);color:var(--ink);min-height:340px;position:relative;overflow:hidden;
  font-family:system-ui,-apple-system,"Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif}

/* 有機ブロブ:border-radius の8値指定で非対称の曲線を作る。直線・直角・正円を避ける。
   大小と重なりで単調さを消す。ベタ塗り+blur で縁を柔らかくし、地と穏やかに溶かす */
.blob{position:absolute;pointer-events:none;filter:blur(26px);z-index:0;
  animation:drift 18s ease-in-out infinite alternate}
.b1{width:260px;height:230px;top:-70px;left:-40px;background:#cfe3d4;
  border-radius:62% 38% 55% 45% / 58% 52% 48% 42%}
.b2{width:220px;height:250px;bottom:-90px;right:8%;background:#f3ddd0;
  border-radius:44% 56% 38% 62% / 52% 44% 56% 48%;animation-delay:-6s}
.b3{width:200px;height:180px;top:30%;right:-50px;background:#d5e0ee;
  border-radius:57% 43% 47% 53% / 45% 58% 42% 55%;animation-delay:-11s}
/* 動きは「生きた質感」を出すためのごく緩やかな変形。ただし常時アニメは 2.3.3 の配慮対象。
   reduced-motion を選んでいる人には完全に止める */
@keyframes drift{
  from{transform:translate(0,0) rotate(0deg)}
  to{transform:translate(14px,-10px) rotate(6deg)}
}
@media (prefers-reduced-motion:reduce){
  .blob{animation:none}
}

.inner{position:relative;z-index:1;padding:34px 32px;
  display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:28px}
.brand h2{font-size:19px;font-weight:700;letter-spacing:-.01em}
.brand p{font-size:12px;color:var(--sub);line-height:1.8;margin-top:8px;max-width:15em}
.sub{margin-top:16px;display:flex;gap:8px;flex-wrap:wrap}
.sub input{border:1px solid #c3ccc6;border-radius:999px;padding:9px 14px;font:inherit;
  font-size:12px;min-width:0;flex:1;background:rgba(255,255,255,.6)}
.sub button{border:0;background:var(--cta);color:#fff;font:inherit;font-size:12px;font-weight:700;
  border-radius:999px;padding:9px 18px;cursor:pointer;white-space:nowrap}
.sub button:focus-visible,.col a:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.col h3{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--sub);
  font-weight:700;margin-bottom:12px}
.col a{display:block;font-size:13px;color:var(--ink);text-decoration:none;
  margin-bottom:9px;width:max-content}
.col a:hover{text-decoration:underline;text-underline-offset:2px}
.copy{position:relative;z-index:1;padding:0 32px 26px;font-size:11px;color:var(--sub)}
</style></head><body>
<div class="blob b1"></div>
<div class="blob b2"></div>
<div class="blob b3"></div>

<div class="inner">
  <div class="brand">
    <h2>Nagomi</h2>
    <p>やわらかな暮らしの道具を、つくる人から。</p>
    <form class="sub" onsubmit="return false">
      <input type="email" placeholder="メールで新着を受け取る" aria-label="メールアドレス">
      <button type="submit">登録</button>
    </form>
  </div>
  <nav class="col" aria-label="製品">
    <h3>製品</h3>
    <a href="#">うつわ</a><a href="#">布もの</a><a href="#">木の道具</a><a href="#">ギフト</a>
  </nav>
  <nav class="col" aria-label="会社情報">
    <h3>会社情報</h3>
    <a href="#">私たちについて</a><a href="#">つくり手</a><a href="#">お問い合わせ</a>
  </nav>
</div>
<div class="copy">© 2026 Nagomi — 有機的な曲線は border-radius の8値指定。動きは reduced-motion で停止。</div>
</body></html>
出典・参考: 自作の再現実装。成立条件(非対称・不規則な曲線・パステル)と border-radius 8値/SVG パスの手法は https://frontendmasters.com/blog/creating-blob-shapes-using-clip-path-shape/ および https://zeireed.com/organic-shapes-in-web-design-2025/ (いずれも2026-07-21閲覧)。動きの配慮は WCAG 2.3.3。コントラスト値は当方で実測。