ToolPal
뒤에 부드러운 빛이 번지는 서리 유리 표면

2026년 CSS 글래스모피즘 — 진짜로 멋있어 보이는 서리 유리 UI 실전 가이드

📷 Cátia Matos / Pexels

2026년 CSS 글래스모피즘 — 진짜로 멋있어 보이는 서리 유리 UI 실전 가이드

글래스모피즘은 잘 만들면 손쉬워 보이지만 어긋나면 싸구려처럼 보입니다. 레시피, 흔한 실수, WCAG 대비 함정, 그리고 쓰지 말아야 할 순간까지 실전 가이드.

D작성: Daniel Park2026년 4월 28일10분 소요

처음으로 글래스모피즘 카드를 라이브에 올렸을 때, 저는 완벽하게 만들었다고 확신했습니다. Figma 시안은 멋졌고, CSS는 10분 만에 완성됐어요 — 반투명 배경, backdrop-filter: blur(20px), 얇은 흰 테두리. 배포했습니다. 그런데 팀의 디자이너가 iPad에서 페이지를 열었더니 카드가 얼룩처럼 보였고, 안드로이드 Chrome에서는 텍스트가 안 읽혔으며, 프로젝트 리드의 오래된 맥북에서는 스크롤할 때마다 프레임이 떨어졌습니다. 같은 여섯 줄의 CSS가 기기마다 완전히 다른 시각 경험을 만들어 낸 거였죠.

그때 깨달았습니다. 글래스모피즘은 보기보다 어렵다는 걸. 레시피는 짧지만 재료 하나라도 어긋나면 음식 전체가 망가집니다. 이 글은 그날의 배포 전에 누가 저에게 해 줬으면 좋았을 설명입니다.

함께 쓸 도구는 CSS Glassmorphism Generator입니다. 블러, 불투명도, 채도, 테두리를 실시간으로 조절하면서 4종류의 배경 프리셋 위에서 효과를 동시에 볼 수 있어요. 글래스를 제대로 디자인하는 유일하게 확실한 방법은 실제 깔릴 배경 위에서 보는 것인데, 대부분의 CSS 플레이그라운드는 평평한 흰 캔버스를 깔아 줘서 모든 문제를 가려 버리거든요. 그래서 만들었습니다.

글래스모피즘이란 정확히 무엇인가

글래스모피즘은 서리 유리를 흉내 내는 디자인 패턴입니다 — 욕실 샤워 도어, 현대식 사무실 파티션, 서리 케이스를 씌운 iPhone 뒷면 같은 것들이요. 효과는 세 가지 광학적 속성으로 정의됩니다.

  1. 반투명성. 너머가 보이긴 하는데 또렷이 보이지는 않아요. 뒤에 무언가가 있다는 게 암시되지, 그대로 드러나지 않습니다.
  2. 블러. 유리 너머의 모든 것이 흐려져 있어요. 또렷한 모서리는 부드러운 색상 그라디언트로 풀어집니다.
  3. 모서리의 미세한 하이라이트. 진짜 유리는 베벨에서 빛을 받습니다. UI 글래스는 거의 흰색에 가까운 얇은 테두리로 이걸 흉내 냅니다.

CSS 레시피는 대략 이렇습니다.

.glass {
  background: rgba(255, 255, 255, 0.1);
  backdrop-filter: blur(12px) saturate(180%);
  -webkit-backdrop-filter: blur(12px) saturate(180%);
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 16px;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
}

본질적으로는 이게 패턴 전부입니다. 여러분이 본 모든 글래스모피즘 UI — Apple Big Sur의 컨트롤 센터, Microsoft Fluent Acrylic, 수많은 SaaS 대시보드의 플로팅 내비게이션 — 전부 이 여섯 속성의 어떤 변형입니다.

속성별 레시피

각 재료가 하는 일이 따로 있습니다. 하나만 빠져도 환상이 깨집니다.

배경 불투명도. 패널 자체의 색이 얼마나 보일지를 정합니다. 낮은 값(0.050.15)은 화려한 배경 위 깨끗한 유리 같은 느낌이고, 높은 값(0.20.35)은 더 두꺼운 서리 유리처럼 보이며 텍스트 가독성이 좋아집니다. 저는 장식용 패널엔 0.1, 텍스트가 들어가는 패널엔 0.2를 기본값으로 씁니다.

backdrop-filter: blur(). 서리 효과 본체입니다. 8px 미만은 "유리"가 아니라 "약간 초점이 안 맞은 것"으로 읽힙니다. 30px을 넘기면 유리보다는 안개 효과처럼 보이기 시작해요. 적정선은 10~20px입니다. 큰 패널은 더 강한 블러를 받을 수 있고, 아주 작은 패널(배지, 칩)은 적게 줘야 합니다.

backdrop-filter: saturate(). 대부분의 튜토리얼이 빠뜨리는 비밀 재료입니다. 순수 블러는 평균을 내면서 색을 회색 쪽으로 끌어당겨 채도를 떨어뜨립니다. saturate(180%)(때로는 200%)를 추가하면 색감이 살아나고 유리가 뿌옇기보다 고급스럽게 느껴집니다. CSS Glassmorphism Generator에서 켜고 끄면서 비교해 보세요 — 차이가 크지만, 옆에 두고 보지 않으면 놓치기 쉽습니다.

테두리. 거의 흰색에 반투명한 얇은 테두리가 유리의 가장자리를 정의합니다. 없으면 패널이 배경에 녹아들어 모호한 얼룩처럼 보이고, 있으면 명확한 경계가 있는 유리판처럼 보여요. 저는 1px solid rgba(255, 255, 255, 0.2)을 기본으로 씁니다. 어두운 배경에서는 0.3까지 올려도 됩니다.

border-radius. 글래스에 날카로운 모서리는 거칩니다. 둥근 모서리가 "부드러운 재질"로 읽혀요. 일반 카드는 1224px이 편안한 범위입니다. 모달이나 풀스크린 시트는 뷰포트 모서리에 닿는 쪽을 3248px까지 올릴 수 있습니다.

box-shadow. 은은한 드롭 섀도가 글래스를 배경 위로 띄워 줍니다. 없으면 패널이 배경에 붙어 있는 것처럼 느껴져요. 그림자는 부드럽고 산란된 형태여야지, 날카로우면 안 됩니다. 저는 0 8px 32px rgba(0, 0, 0, 0.1)을 거의 바꾸지 않고 씁니다.

글래스모피즘이 망가지는 이유

수많은 디자이너-개발자 핸드오프를 검토하다 보니, 어떤 실수가 못생긴 글래스를 만드는지가 명확해졌습니다.

유리 뒤 배경이 너무 단순합니다. 글래스모피즘이 가장 자주 망하는 이유 한 가지를 꼽으라면 이겁니다. 서리 유리는 굴절시킬 색이 있는 화려하고 변화 있는 무언가가 뒤에 있어야 합니다 — 진한 그라디언트, 사진, 메시 그라데이션. 단조로운 짙은 회색 배경 위에 글래스 패널을 올리면 그냥 짙은 회색 얼룩처럼 보입니다. CSS Gradient Generator는 글래스가 일할 거리가 있는 배경을 만들기 좋은 도구예요.

블러는 약하고 불투명도는 강합니다. "읽기 쉽게 만든다"고 배경 불투명도를 0.5나 0.6까지 올리는 흔한 실수입니다. 그 시점이면 그건 그냥 약간 반투명한 단색 패널이지 글래스가 아니에요. 가독성이 필요하면 불투명도는 0.2까지만 올리고, 그 이상은 스크림이나 text-shadow로 대비를 보강하세요. 0.25를 넘기면 글래스 효과는 사망합니다.

채도 보강을 빼먹습니다. 위에서 말했듯, saturate() 없는 순수 blur()는 빛바랜 느낌을 줍니다. 이게 "아마추어 글래스"와 "Apple 글래스"의 차이입니다.

테두리 두께가 안 맞습니다. 너무 두꺼우면(2~3px) 액자처럼 보여서 떠 있는 느낌이 사라집니다. 너무 얇으면(0.5px) 레티나에서 사라져 버려요. 1px이 거의 항상 정답이지만, 타깃 디바이스에서 꼭 확인하세요.

글래스 위에 글래스를 쌓습니다. 글래스 두 장을 겹치면 보통 혼란스럽게 보입니다 — 어느 면이 어느 깊이인지 눈이 구분하지 못해요. 굳이 겹쳐야 한다면 바깥 패널의 불투명도와 블러를 더 올려서 안쪽 패널이 그 위에 떠 보이게 만들어야 합니다. 더 좋은 답은 안 겹치는 것이지만요.

단조로운 본문 배경 위 글래스. "배경이 단순하다"와 비슷해 보이지만 미묘하게 다릅니다. 히어로 이미지가 화려한 사이트도 본문 섹션은 평평한 오프화이트로 전환하는 경우가 많아요. 그런 섹션에 깔린 글래스 카드는 끔찍해 보입니다. 배경에 색을 어느 정도 남기든가(은은한 메시 그라데이션이 좋습니다), 그 섹션엔 글래스를 쓰지 마세요.

WCAG 대비의 함정

글래스모피즘에서 가장 자주 무시되는 사실 하나 — 대부분의 글래스 UI는 본문 텍스트의 WCAG AA 대비 요건을 통과하지 못합니다.

왜냐하면 패널의 실효 배경이 그 너머로 비치는 것이고, 즉 전경 텍스트와의 대비가 픽셀마다 달라지기 때문이에요. 깔린 그라디언트의 밝은 지점에서는 2:1(실패), 어두운 지점에서는 6:1(통과)일 수 있습니다. 단일 배경색을 기준으로 검사하는 자동화 도구로는 이걸 잡지 못합니다.

실용적인 해결책은 다음과 같습니다.

평균이 아니라 최악의 배경에서 검사하세요. 깔린 이미지에서 가장 복잡하고 밝은 부분 위에 렌더링된 글래스 패널을 스크린샷으로 찍고, 그 픽셀을 샘플링한 뒤 대비 도구에 넣어 보세요. 거기서 떨어지면 디자인이 떨어진 겁니다.

스크림을 추가하세요. 스크림은 복잡한 배경과 글래스 사이에 들어가는 반투명 단색 레이어입니다 — 어두운 디자인엔 반투명 검은 사각형, 밝은 디자인엔 반투명 흰 사각형. 글래스가 다뤄야 하는 색의 범위가 압축되면서 대비가 안정됩니다. 화려한 배경 위 순수 글래스 효과의 "와우" 요소는 약간 잃지만, 텍스트가 읽힙니다.

텍스트 대비를 직접 끌어올리세요. 변화 있는 배경 위 글래스라면 오프화이트보다 순백색 텍스트가 더 낫습니다. 은은한 text-shadow: 0 1px 2px rgba(0,0,0,0.4)도 지각 비용 없이 1~2점의 대비를 더해 줘요 — 사람들은 그림자를 거의 못 보지만 가독성 향상은 눈치챕니다.

prefers-reduced-transparency를 존중하세요. 사용자가 투명 UI를 끌 수 있게 해 주는 미디어 쿼리입니다. 이제 대부분의 브라우저가 지원해요. 쿼리 안에서 글래스를 단색 패널로 바꿔 주세요.

@media (prefers-reduced-transparency: reduce) {
  .glass {
    background: rgb(30, 30, 40);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }
}

인지적 접근성이 필요한 사용자, 저시력 사용자, 그리고 그냥 명료한 UI를 선호하는 사용자 모두 고마워합니다. 구현 비용은 5분이고요.

본문 텍스트엔 글래스를 쓰지 마세요. 이건 충분히 강조하기 어려운 정도입니다. 글래스는 크롬을 위한 것입니다 — 내비게이션 바, 모달, CTA 카드, 장식 패널. 본문 한 단락을 글래스 위에 올리는 순간, 모든 단어가 변화하는 배경 위에서 WCAG라는 시험을 봐야 해요. 단락이 많은 콘텐츠엔 단색 패널을 쓰세요.

브라우저 지원과 폴백

2026년 기준 backdrop-filter는 다음 환경에서 지원됩니다.

  • Chrome / Edge / 모든 Chromium 브라우저(2019년 Chrome 76부터)
  • Firefox(2022년 7월 103부터)
  • Safari(-webkit- 접두사 필수, 2015년 Safari 9부터)

사실상 사람들이 쓰는 거의 모든 브라우저가 커버됩니다. 남은 빈틈은 시스템 업데이트가 안 된 폰의 오래된 안드로이드 웹뷰, 일부 앱 내장 브라우저, 그리고 롱테일 트래픽 약간 정도예요.

올바른 접근은 기능 감지와 폴백 조합입니다.

.panel {
  background: rgba(30, 30, 40, 0.95);
}

@supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px)) {
  .panel {
    background: rgba(255, 255, 255, 0.1);
    backdrop-filter: blur(12px) saturate(180%);
    -webkit-backdrop-filter: blur(12px) saturate(180%);
  }
}

폴백은 거의 불투명한 단색 패널입니다. 미지원 브라우저 사용자는 글래스의 마법은 못 보지만 멀쩡하게 보이는 화면을 받고, 지원 브라우저 사용자는 효과를 다 받습니다. 깨진 상태가 없어요.

저는 항상 backdrop-filter-webkit-backdrop-filter를 둘 다 적습니다. 접두사를 빼면 Safari 사용자는 조용히 폴백으로 떨어지거든요. 그건 원하는 결과가 아닙니다.

성능 — 조용한 비용

backdrop-filter는 GPU 가속을 받습니다. 그래서 공짜처럼 들립니다. 공짜가 아닙니다.

backdrop-filter가 걸린 모든 요소는 브라우저가 그 뒤 영역의 별도 레이어를 합성하고, 블러와 채도를 적용한 뒤 결과를 다시 합성하도록 강제합니다. 데스크톱 GPU에서는 체감되지 않습니다. 플래그십 폰에서도 괜찮아요. Adreno 610 이하의 보급형 안드로이드 폰에선 측정 가능한 부담이 됩니다.

성능 비용은 세 가지 변수에 비례합니다.

블러 반경. 30px 블러는 10px 블러의 약 9배 비용입니다. 커널 크기가 제곱으로 커지기 때문이에요. 글래스로 읽히는 가장 작은 블러를 고르세요. 저는 기본값을 20px에서 12px로 옮겼고, 대부분의 사용자는 차이를 느끼지 못합니다.

글래스 면적. 비용은 픽셀당 발생합니다. 200×200 카드는 저렴하지만, 풀뷰포트 모달에 backdrop-filter를 거는 건 비쌉니다. 가능하면 글래스를 작게 유지하세요.

글래스 개수. 긴 스크롤 페이지에 보급형 안드로이드 기기로 글래스 카드 10개를 쌓으면 프레임 레이트가 눈에 띄게 떨어집니다. 카드 목록이 있다면 모든 카드를 글래스로 만들지 말고, 단색 카드 위에 상단 sticky 글래스 헤더만 올리는 식으로 하세요.

글래스가 많은 페이지에서 스크롤이 끊긴다면 DevTools 성능 탭에서 프로파일링해 보세요. 합성이나 페인트 시간이 긴 부분을 찾으면 거의 항상 답은 글래스를 빼는 게 아니라 블러 반경이나 면적을 줄이는 것입니다.

will-change: backdrop-filter는 솔깃한 최적화지만 절제해서 쓰세요 — 패널이 바뀌지 않을 때도 레이어를 합성된 채로 유지하라고 브라우저에 지시하는 거라서, 페인트 횟수를 줄이는 대가로 메모리를 씁니다. 애니메이션이 있는 패널(슬라이드 인하는 모달)엔 도움이 되지만, 정적인 패널엔 그냥 메모리만 잡아먹어요.

글래스를 써야 할 때, 쓰지 말아야 할 때

오랫동안 해 보면서 저만의 규칙이 생겼습니다.

글래스를 씁니다:

  • 플로팅 내비게이션 바, 특히 히어로 이미지나 화려한 배경 위에서.
  • 모달 다이얼로그와 시트. 블러가 모달과 그 아래 페이지를 시각적으로 분리해 줍니다.
  • 고급스럽게 떠 있는 느낌이 필요한 히어로 CTA 카드.
  • 콘텐츠 위에 떠오르는 툴팁과 알림.
  • 미디어 중심 앱(음악 플레이어, 사진 갤러리)의 크롬.

글래스를 쓰지 않습니다:

  • 긴 본문 텍스트. 단색 패널만 씁니다.
  • 입력 필드가 많은 폼. 폼 아래 복잡한 배경에서 오는 시각적 노이즈가 입력을 스캔하기 어렵게 만듭니다.
  • 피드나 긴 카드 그리드 같은 반복 리스트 항목. 대규모로 글래스를 쌓으면 성능과 시각적 위계가 동시에 무너집니다.
  • 데이터 중심 인터페이스(대시보드, 표). 데이터에는 깨끗하고 예측 가능한 배경이 어울립니다.
  • 사용자가 몇 초 이상 읽는 모든 맥락.

좋은 휴리스틱 하나 — 사용자가 그 표면과 3초 미만으로 상호작용한다면(버튼, 알림, 내비게이션 탭) 글래스가 괜찮습니다. 10초 이상 읽거나 입력해야 한다면 단색 패널을 쓰세요.

다른 도구와의 조합

글래스는 디자인에서 혼자 사는 일이 거의 없습니다. 제가 가장 자주 같이 쓰는 컴포넌트들입니다.

화려한 그라디언트 배경이 절반을 합니다. CSS Gradient Generator는 글래스가 진짜 글래스처럼 보이게 만들어 주는 멀티스톱·메시 스타일 배경을 만들어 줍니다.

글래스 패널 아래의 부드럽고 레이어드된 드롭 섀도가 떠 있는 느낌을 완성합니다. CSS Box Shadow 생성기로 오프셋·블러·spread를 미세 조정해서 그림자가 느껴지되 보이지 않도록 만들 수 있어요.

광학 효과를 한 단계 더 밀고 싶다면 — 패널 자체에 미세한 노이즈, 색조 회전, 약간의 대비 부스트를 더하고 싶다면 — CSS Filter Generator로 글래스 요소(백드롭이 아니라) 위에 필터를 쌓을 수 있습니다.

이 셋과 backdrop-filter 레시피의 조합이 사람들로 하여금 DevTools를 열어 "어떻게 만든 거지?"를 보게 만드는 종류의 글래스 UI를 만들어 냅니다.

오늘 단 하나의 글래스 카드를 라이브에 올린다면

가장 자주 받는 질문에 대한 답입니다. "마케팅 페이지에 장식용 글래스 카드 하나 올린다면 정확히 어떤 CSS를 쓸 거예요?" 7년 동안 이걸 만지고 나서, 2026년 현재 제가 쓰는 코드입니다.

.card {
  background: rgba(255, 255, 255, 0.08);
  backdrop-filter: blur(14px) saturate(160%);
  -webkit-backdrop-filter: blur(14px) saturate(160%);
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: 20px;
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12);
  padding: 24px;
}

@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .card {
    background: rgba(20, 20, 30, 0.9);
  }
}

@media (prefers-reduced-transparency: reduce) {
  .card {
    background: rgb(20, 20, 30);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }
}

뒤에는 화려한 그라디언트나 사진 배경. 안에는 본문 텍스트 없이 — 헤딩 한 줄, 한 줄짜리 설명, 버튼 하나. 배포 전에 실제 iPhone, 실제 보급형 안드로이드, 실제 윈도우 노트북에서 꼭 확인하세요. 셋 중 하나라도 별로면 그 패널은 아직 준비가 안 된 겁니다.

전체 패턴은 이게 다입니다. 레시피는 CSS 여섯 줄과 미디어 쿼리 두 개. 어려운 부분은 코드가 아닙니다. 올바른 배경에서 테스트하는 규율, 대비 요건을 존중하는 태도, 그리고 언제 쓰지 말아야 할지 아는 안목입니다. 이 셋을 갖추면, 인터페이스가 지난 5년간 만들어진 모든 대시보드처럼 보이지 않으면서도 현재 트렌드에 닿아 있는 느낌을 줄 수 있어요.

자주 묻는 질문

D

작성자

Daniel Park

서울에서 활동하는 시니어 프런트엔드 엔지니어. 국내 SaaS 회사들에서 7년간 웹 애플리케이션을 개발하며 개발자 도구, 웹 성능 최적화, 프라이버시 중심 설계에 집중해 왔습니다. JavaScript 생태계 오픈소스 기여자이자 ToolPal 창립자입니다.

더 알아보기

이 글 공유하기

XLinkedIn

관련 글