【Next.js】グラスモーフィズムの作り方を解説|Liquid Glass風すりガラス UI
公開日: 2026年9月12日 · 読了目安 10 分
Next.js と Tailwind CSS で、すりガラスのようなグラスモーフィズム UI を作る方法です。backdrop-blur の基本、文字を読みやすくするコツ、Liquid Glass風のログインカード、スクロールで変わるガラスのヘッダー、Safari の対策までコード付きで解説します。
すりガラス風のグラスモーフィズムはどこに使うか
Next.js で LP やログイン画面を作っていて、背景が透けて見える、すりガラスのようなカードを置きたくなることがあります。
グラスモーフィズムを上手に使う答えは、写真やグラデーションの上に、ガラスの面を1枚だけ置くことです。
Tailwind CSS なら、半透明の背景と背景のぼかし、細く明るい枠線の3つを組み合わせるのが出発点です。
ただし、このままでは文字が背景に沈みやすくなります。ガラスを全セクションに広げると、スマホの動作も重くなります。
グラスモーフィズムが失敗しやすい3つの原因
Tailwind で作るガラスのカードと、文字を読みやすくするコツ
Liquid Glass風のログインカードと、スクロールでガラスになるヘッダー
Safari で blur が効かないときの対策
グラスモーフィズムと Liquid Glass風の違い
グラスモーフィズムは、次の3つを組み合わせて、すりガラスの板のように見せる表現です。
半透明の背景
背景ぼかし(backdrop-filter: blur)
細い明るい枠線
Liquid Glass は、Apple がネイティブアプリの UI 向けに示したマテリアルの名前です。
Web には同じものを再現する公式の API はありません。そのため Web で「Liquid Glass風」と呼ぶときも、やることはグラスモーフィズムとほぼ同じです。
違いを出すなら、角丸を大きくします。縁に光の反射のような明るい線を足すと、より立体的に見えます。
グラスモーフィズムが失敗しやすい3つの原因
ガラスの表現は、クラスを足すだけで見た目が変わるので手軽です。その分、次の3つで失敗しやすくなります。
背景が単色で、すりガラスにぼかすものがない
backdrop-blur は、後ろにあるものをぼかす効果です。背景が白一色なら、ぼかしても白いままで、ただの半透明のカードにしか見えません。
ガラスは、後ろに写真やグラデーション、色の付いた図形があって初めて成り立ちます。
ガラスの上の文字のコントラストが足りない
明るい写真の上に bg-white/10 と白い文字を重ねると、文字が背景に溶けます。
WCAG(Web のアクセシビリティの指針)の AA では、本文の文字と背景のコントラスト比を 4.5:1 以上にすることが求められます。見た目の雰囲気より、読めることを先に確保してください。
大きな面積や多くの要素をぼかしている
backdrop-filter は、スクロールのたびに後ろの描画をぼかし直すため、面積が広いほど処理が重くなります。固定ヘッダーの細い帯やカード1枚なら問題になりにくいものの、画面いっぱいのパネルや、ガラスのカードを何十枚も並べる使い方はスマホで重くなります。
Tailwind でグラスモーフィズムのカードを作る
基本の組み合わせをクラスで書くと、半透明の背景が bg-white/10、背景のぼかしが backdrop-blur-md です。
枠線は border border-white/20 で、細く明るい線にします。
下のコードでは、写真の上に、短い見出しとボタンを載せたガラスのカードを作ります。文字を読みやすくするために、写真の上に薄い黒のオーバーレイを敷き、ガラスの色も少し暗めにしています。
長い本文はガラスの上に置かず、不透明な背景のセクションに置きます。ガラスに載せるのは、次の程度にとどめます。
見出し
1〜2行の説明
ボタン
// components/GlassHero.tsx
import Image from "next/image";
export function GlassHero() {
return (
<section className="relative isolate flex min-h-[80vh] items-center justify-center overflow-hidden px-6">
<Image
src="/hero-mountain.jpg"
alt=""
fill
priority
className="-z-20 object-cover"
/>
<div aria-hidden="true" className="absolute inset-0 -z-10 bg-black/30" />
<div className="w-full max-w-md rounded-3xl border border-white/20 bg-zinc-900/70 p-8 text-white shadow-2xl supports-[backdrop-filter]:bg-white/10 supports-[backdrop-filter]:backdrop-blur-xl">
<h1 className="text-3xl font-semibold tracking-tight">山の上で、静かに働く</h1>
<p className="mt-3 text-sm text-white/80">
電波の届く山小屋を、1泊から予約できます。
</p>
<a
href="#booking"
className="mt-6 inline-block rounded-full bg-white px-6 py-3 text-sm font-medium text-zinc-900"
>
空き状況を見る
</a>
</div>
</section>
);
}すりガラスのぼかしが効かないブラウザへのフォールバック
上のコードは、ふだんは bg-zinc-900/70 の不透明に近い背景にしています。
backdrop-filter に対応したブラウザでだけ、supports-[backdrop-filter]: で半透明とぼかしに切り替えます。ぼかしが効かない環境でも、文字が読めないことはありません。
ガラスのカードを Liquid Glass風に寄せる
Liquid Glass風に見せたいときは、角丸を rounded-3xl 以上に大きくし、縁の内側に明るい線を足します。shadow-[inset_0_1px_0_rgba(255,255,255,0.4)] のような内側の影を足すと、上端に光が当たったように見えます。
Liquid Glass風のログインカードを作る
ガラスの表現がいちばん映えるのは、ログイン画面のように「背景写真+小さなフォーム1つ」の画面です。入力欄が少なく、ガラスの面積も小さいので、読みやすさと処理の重さの両方を保てます。
入力欄の背景は bg-white/15 程度にし、プレースホルダの色も白の濃さを下げすぎないようにします。label は sr-only で残しておくと、見た目をすっきりさせたまま読み上げにも対応できます。
完成した画面が欲しいときは、リキッドガラス・ログイン をコピーするか(Free Sample。無料アカウントで回数制限なし。カタログ全体は30日ビルドパス $19 の1回払い、Lifetime $79 の1回払い、Plus は月額 $9)、3つの作り方の比較 を読んでください。
// components/GlassLogin.tsx
export function GlassLogin() {
return (
<form className="w-full max-w-sm space-y-4 rounded-[2rem] border border-white/25 bg-zinc-900/70 p-8 text-white shadow-[inset_0_1px_0_rgba(255,255,255,0.4)] supports-[backdrop-filter]:bg-white/10 supports-[backdrop-filter]:backdrop-blur-2xl">
<h1 className="text-center text-2xl font-semibold">ログイン</h1>
<label htmlFor="user" className="sr-only">ユーザー名</label>
<input
id="user"
name="user"
autoComplete="username"
placeholder="ユーザー名"
className="w-full rounded-full border border-white/20 bg-white/15 px-5 py-3 text-sm placeholder:text-white/70 outline-none focus:border-white/60"
/>
<label htmlFor="password" className="sr-only">パスワード</label>
<input
id="password"
name="password"
type="password"
autoComplete="current-password"
placeholder="パスワード"
className="w-full rounded-full border border-white/20 bg-white/15 px-5 py-3 text-sm placeholder:text-white/70 outline-none focus:border-white/60"
/>
<button
type="submit"
className="w-full rounded-full bg-white py-3 text-sm font-medium text-zinc-900 transition hover:bg-white/90"
>
ログイン
</button>
</form>
);
}スクロールですりガラスになるヘッダーを作る
ページを開いたときはヘッダーを透明にしてヒーローを見せ、少し下にスクロールしたらガラスの背景を付ける形もよく使われます。ガラスの面積が細い帯だけなので、全ページに使っても重くなりにくい使い方です。
// components/GlassHeader.tsx
"use client";
import { useEffect, useState } from "react";
export function GlassHeader() {
const [scrolled, setScrolled] = useState(false);
useEffect(() => {
const onScroll = () => setScrolled(window.scrollY > 24);
onScroll();
window.addEventListener("scroll", onScroll, { passive: true });
return () => window.removeEventListener("scroll", onScroll);
}, []);
return (
<header
className={
"fixed inset-x-0 top-0 z-50 transition-colors duration-300 " +
(scrolled
? "border-b border-white/10 bg-zinc-950/80 supports-[backdrop-filter]:bg-zinc-950/40 supports-[backdrop-filter]:backdrop-blur-md"
: "bg-transparent")
}
>
<nav className="mx-auto flex h-16 max-w-6xl items-center justify-between px-6 text-white">
<a href="/" className="font-semibold">Brand</a>
<a href="#contact" className="text-sm">お問い合わせ</a>
</nav>
</header>
);
}ガラスのヘッダーをさらに作り込むなら
左右に余白を取って浮かせた pill 型のヘッダーや、下にスクロールすると隠れるヘッダーは、ヘッダーの記事で詳しく解説しています。https://design-layer.com/ja/articles/nextjs-modern-header-guide
完成したグラスモーフィズムのセクションをコピーして使う

ここまでのコードで、読みやすいガラスの UI は作れます。ただ、次の点まで揃えると、クラスを足すだけでは届かない調整が続きます。
背景写真の選び方
ぼかしの強さ
文字の色
ホバーの反応
DesignLayer には、風景写真の上にリキッドガラスのカードを置いた「リキッドガラス・ログイン」があります。壁紙の上にガラスの縦型ナビを置いた「ガラスサイドバーナビ」などもあります。
ブラウザでライブプレビューを確認し、背景写真と文言を差し替えて使えます。https://design-layer.com/ja/components
ライブプレビューは無制限です。無料サンプル10個を無料アカウントで回数制限なくコピーでき、動画プロンプトは月1回です。Free では MCP に接続できません。カタログ全体は30日ビルドパス($19の1回払い、自動更新なし)、Lifetime Access(先着100名の$79の1回払い)、Plus(月額 $9、いつでも解約可)です。
ガラスは1画面に1か所を目安にし、全ページに複製しないようにしてください。
グラスモーフィズムについてよくある質問
Safari 17 以前は、-webkit- の付いた -webkit-backdrop-filter にしか対応していません。
Tailwind v3.4.5 以降の backdrop-blur は、-webkit- 付きも自動で出力します。効かない場合は、まず Tailwind を更新してください。
この記事のように supports-[backdrop-filter]: で囲んだ場合、Safari 17 以前では不透明に近いフォールバックが表示されます。
効かない環境のために、不透明に近い背景のフォールバックも用意しておきます。
まとめ:Next.js でグラスモーフィズムを作る手順
グラスモーフィズムは、写真やグラデーションの上にガラスの面を1枚だけ置く
出発点は、半透明の背景・背景のぼかし・細く明るい枠線の3つ。文字のコントラストは 4.5:1 以上を確保する
ぼかしに対応していないブラウザには、不透明に近い背景を出す
Liquid Glass風は、大きな角丸と縁の明るい線で立体感を足す
ログインカードやスクロール後のヘッダーのように、面積の小さい場所で使う
ヒーローの作り方は https://design-layer.com/ja/articles/nextjs-animated-hero-section-guide で解説しています。
ホバーで反応するカードは https://design-layer.com/ja/articles/nextjs-hover-card-guide にまとめています。
仕上がったガラスのセクションから始めたい場合は、カタログで見比べてください。https://design-layer.com/ja/components



