テクニック

グラスモーフィズムをCSSで実装する方法【コピペOK・2026年版】

この記事の対象: グラスモーフィズムを実装したいフロントエンドエンジニア・Webデザイナー
読了時間: 約6分

グラスモーフィズム(Glassmorphism)は、半透明の背景+ぼかし+薄いボーダーを組み合わせたすりガラス風のUIスタイルです。iOSやmacOSでおなじみの表現で、Webサイトのカード・ナビゲーション・モーダルなど幅広い場面で使われています。

2026年現在、核となるbackdrop-filterは主要ブラウザすべてで対応済み。この記事では、コピペで使える基本コードから、カード・ナビゲーションの実装パターン、ダークモード対応、パフォーマンス上の注意点まで、実務で必要な情報をまとめて解説します。


グラスモーフィズムの基本CSSコード

コピペで使える最小構成

グラスモーフィズムに必要なCSSの最小構成です。このコードをそのままコピーして使えます。

.glass {
  background: rgba(255, 255, 255, 0.15);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 12px;
}

各プロパティの役割と、デザインに合わせて調整する際の目安は以下の通りです。

プロパティ 役割 調整の目安
background: rgba(255,255,255,0.15) 半透明の白背景 0.05(ほぼ透明)〜 0.25(やや白い)
backdrop-filter: blur(12px) 背景のぼかし 4px(軽い)〜 24px(強い)
-webkit-backdrop-filter Safari用プレフィックス blur値はbackdrop-filterと揃える
border ガラスの縁を表現 不透明度を0.1〜0.3の範囲で
border-radius 角丸 8px〜24pxが一般的

-webkit-backdrop-filterはSafari対応に必須です。これを省略すると、iOS Safari・macOS Safariでぼかし効果がまったく効きません。

背景がないとグラスモーフィズムは成立しない

グラスモーフィズムは「要素の背後が透けて見える」ことで成り立ちます。単色の背景ではぼかしをかけても見た目に変化が出ません。

グラデーション、写真、動画など、色の変化がある背景の上.glass要素を配置してください。

body {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  min-height: 100vh;
}

背景画像を使う場合は、ファイルサイズにも気を配りましょう。Web画像の最適化ガイドでAVIF・WebP対応の方法をまとめています。


カード・ナビゲーションの実装パターン

料金カードの実装

料金表やサービス紹介のカードUIは、グラスモーフィズムの定番の使い方です。

<div class="glass-card">
  <h3>プレミアムプラン</h3>
  <p class="price">¥9,800<span>/月</span></p>
  <ul>
    <li>無制限アクセス</li>
    <li>優先サポート</li>
    <li>カスタムドメイン</li>
  </ul>
  <button>申し込む</button>
</div>
.glass-card {
  background: rgba(255, 255, 255, 0.12);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 16px;
  padding: 32px;
  max-width: 360px;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);
}

.glass-card h3 {
  color: #fff;
  margin: 0 0 8px;
}

.glass-card .price {
  font-size: 36px;
  font-weight: 700;
  color: #fff;
}

.glass-card .price span {
  font-size: 16px;
  font-weight: 400;
  opacity: 0.7;
}

.glass-card ul {
  list-style: none;
  padding: 0;
  color: rgba(255, 255, 255, 0.85);
}

.glass-card button {
  width: 100%;
  padding: 12px;
  background: rgba(255, 255, 255, 0.2);
  border: 1px solid rgba(255, 255, 255, 0.3);
  border-radius: 8px;
  color: #fff;
  font-size: 16px;
  cursor: pointer;
  transition: background 0.3s;
}

.glass-card button:hover {
  background: rgba(255, 255, 255, 0.35);
}

box-shadowを加えると、カードが背景から浮いている印象が強まります。影の色はrgba(0, 0, 0, 0.1〜0.15)の範囲が自然です。

カードを横並びにする場合は、CSS Gridレイアウトの実践パターン集のカードグリッドが参考になります。

固定ナビゲーションバーの実装

スクロール時にページの内容がナビゲーションの背後に透けて見える固定ナビは、グラスモーフィズムと相性が良いパターンです。

.glass-nav {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  background: rgba(255, 255, 255, 0.08);
  backdrop-filter: blur(20px) saturate(180%);
  -webkit-backdrop-filter: blur(20px) saturate(180%);
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  padding: 16px 24px;
}

ポイントはsaturate(180%)の追加です。ぼかした背景の彩度が上がり、macOSのメニューバーに近いリッチな質感が出ます。Apple公式サイトのナビゲーションでも同様の手法が使われています。

ナビゲーションの横幅やパディングの設計については、Webデザインのコンテンツ幅の記事で考え方を解説しています。


ダークモードへの対応

ライトモードとダークモードの両方に対応する場合は、prefers-color-schemeで背景色の不透明度を切り替えます。

.glass {
  background: rgba(255, 255, 255, 0.12);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 12px;
}

@media (prefers-color-scheme: dark) {
  .glass {
    background: rgba(0, 0, 0, 0.3);
    border-color: rgba(255, 255, 255, 0.08);
  }
}

ダークモードでは白の半透明から黒の半透明に切り替えます。ボーダーの不透明度も下げると暗い背景に馴染みます。

色の値をハードコードせず、CSS変数(カスタムプロパティ)で管理すると、テーマ切り替えの実装が楽になります。


ブラウザ対応とフォールバック(2026年)

backdrop-filterの主要ブラウザ対応状況は以下の通りです。

ブラウザ 対応状況
Chrome 76以降で対応
Safari 9以降で対応(-webkit-プレフィックス必要)
Firefox 103以降で対応
Edge 79以降で対応
iOS Safari 9以降で対応
Android Chrome 76以降で対応

2026年現在、主要ブラウザすべてで対応済みです。ただし、社内システムや一部ユーザーが古いブラウザを使う可能性がある場合は、@supportsでフォールバックを用意しておくと安心です。

.glass {
  /* フォールバック: 半透明なしの濃い背景 */
  background: rgba(30, 30, 30, 0.85);
}

@supports (backdrop-filter: blur(1px)) {
  .glass {
    background: rgba(255, 255, 255, 0.12);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
  }
}

@supportsの中にbackdrop-filter対応時のスタイルを書き、外側にフォールバックの背景色を置きます。非対応ブラウザでは濃い半透明の背景が表示されるため、テキストの可読性は保たれます。


使いどころとパフォーマンスの注意点

グラスモーフィズムが効果的な4つの場面

場面 効果 実装のコツ
ヒーローセクションのオーバーレイ 背景画像の上にテキストを読みやすく配置 blur値は16px〜20pxで可読性を確保
カードコンポーネント 高級感・先進性の演出 複数並べるときはグリッドと組み合わせる
モーダル・ダイアログ 背景との分離を明確にしつつ圧迫感を軽減 オーバーレイの暗さと合わせてblur値を調整
固定ナビゲーション スクロール時にコンテンツが透けて見える saturate()で彩度を足すとリッチに

Soreiine!!ギャラリーでも、ヒーローセクションやカードUIにグラスモーフィズムを取り入れたサイトが増えています。背景に色の変化がある箇所で使われているケースがほとんどで、逆に白背景のセクションで使っているサイトはまず見かけません。

パフォーマンスの注意点

backdrop-filterはGPUリソースを使います。適用する要素が増えるほどレンダリングコストが上がり、スクロールのカクつきにつながります。

  • 1ページあたり2〜3要素に抑えるのが目安
  • スクロールに連動してアニメーションする要素には使わない
  • モバイルではblur値を控えめに(8px〜12px程度)する

特にスマートフォンの古い端末では処理が重くなりやすいため、スマホデザインのサイズ設計ガイドと合わせて、モバイル環境での表示確認を怠らないようにしましょう。

アクセシビリティ(コントラスト比)

半透明の背景は、下に表示される要素によってテキストの読みやすさが変わります。WCAG 2.1のコントラスト比基準(通常テキストで4.5:1以上)を満たしているか、必ずチェックしてください。

確認のポイントは以下の3つです。

  • ぼかしの背後に暗い色が来た場合でも、文字が読めるか
  • ぼかしの背後に明るい色が来た場合でも、文字が読めるか
  • 不透明度を上げてコントラストを確保できる余地があるか

テストには、Chrome DevToolsのコントラスト比チェッカーが便利です。


リキッドグラスへの発展

グラスモーフィズムの発展形として注目されているのが、AppleがiOS 26で採用した「リキッドグラス」です。透明感に加えて、動的な反射・屈折・液体的なアニメーションが加わった表現で、グラスモーフィズムの考え方がベースになっています。

グラスモーフィズムの実装を理解していれば、リキッドグラスへの応用もスムーズに進められます。


よくある質問

グラスモーフィズムとニューモーフィズムの違いは?

グラスモーフィズムは「半透明+ぼかし」で背景が透けて見えるスタイルです。ニューモーフィズムは「凹凸の影」で要素を浮き彫りに見せるスタイルで、背景は透過しません。どちらもUIに奥行きを出す手法ですが、見た目も実装も大きく異なります。

backdrop-filterが効かないときの原因は?

よくある原因は3つです。-webkit-backdrop-filterのプレフィックスが抜けている(Safari非対応になる)、背景が単色で変化がないためぼかし効果が見えない、親要素にoverflow: hiddenopacityが設定されていて効果が打ち消されている。まずはプレフィックスと背景の2点を確認してください。

グラスモーフィズムを使うとページが重くなる?

backdrop-filterはGPU処理を伴うため、適用要素が多いとパフォーマンスに影響します。1ページに2〜3要素程度であれば、体感できるほどの遅延は起きません。モバイル端末で大量に使う場合は、blur値を下げるか、使用箇所を絞って対処します。

ダークモードでもグラスモーフィズムは使える?

使えます。ライトモードではrgba(255, 255, 255, 0.12)のように白の半透明を使いますが、ダークモードではrgba(0, 0, 0, 0.3)のように黒の半透明に切り替えるのが基本です。prefers-color-schemeメディアクエリで出し分けてください。


まとめ

グラスモーフィズムのCSS実装に必要な知識をまとめます。

  • 基本3要素: 半透明背景(rgba)+ ぼかし(backdrop-filter: blur())+ 薄いボーダー
  • 必須: -webkit-backdrop-filterプレフィックスでSafari対応
  • 前提条件: 背景にグラデーションや画像がないと効果が出ない
  • ブラウザ対応: 2026年は主要ブラウザすべてで対応済み。フォールバックは@supports
  • パフォーマンス: 1ページ2〜3要素に抑える。モバイルではblur値を控えめに
  • アクセシビリティ: テキストのコントラスト比(4.5:1以上)を必ず確認

コードをコピーしたら、まずグラデーション背景の上に.glassクラスを当てて動作確認してみてください。