18P by neo 2일전 | ★ favorite | 댓글 2개
  • Apple이 WWDC25에서 공개한 Liquid Glass 디자인 언어의 핵심 효과를 CSS와 SVG 필터 조합으로 재현하는 방법
  • Specular Highlights, Blur, Color Filter, Refraction, Edge/Ripple Distortion, Chromatic Aberration 등 실제 유리 재질을 모방하는 다양한 레이어를 단계별로 CSS/SVG로 구현
  • 주요 효과 구현에는 backdrop-filter, box-shadow, SVG DisplacementMap, Turbulence, ColorMatrix, Offset, Blend 등 고급 CSS·SVG 기술 사용
  • 브라우저 호환성은 Chrome 중심이며, Safari/Firefox에서는 SVG 필터가 동작하지 않아 Blur·Shadow만 적용됨
  • 복잡한 효과일수록 GPU 사용량이 크고, UI 전반에 남용 시 성능 저하가 발생할 수 있어 핵심 영역 위주 사용 권장

Liquid Glass란?

  • Apple의 최신 디자인 언어로, 실제 유리처럼 빛의 반사·굴절, 색 변화, 입체감을 모방한 고급 그래픽 효과를 지향함
  • UI 요소에 깊이감과 생동감을 더하는 데 활용되며, 시각적으로 매끄럽고 물리적 감촉을 연상시키는 특징이 있음

효과의 주요 레이어 및 구현 방법

1. Specular Highlights(유리의 반사광)

  • 유리 가장자리에 하이라이트를 추가해 깊이와 입체감을 강조함
  • CSS의 inset box-shadow 여러 개를 중첩 적용해, 각도별로 빛이 반사되는 느낌을 표현
    box-shadow:  
        inset 10px 10px 20px rgba(153, 192, 255, 0.1),  
        inset 2px 2px 5px rgba(195, 218, 255, 0.2),  
        inset -10px -10px 20px rgba(229, 253, 190, 0.1),  
        inset -2px -2px 30px rgba(247, 255, 226, 0.2);  
    
  • [Fresnel Effect]를 참고해, 빛의 반사 강도를 자연스럽게 조정함

2. Blur(배경 블러)

  • 유리 뒤쪽 콘텐츠에만 블러를 적용하기 위해 backdrop-filter: blur(20px); 사용
  • 실제 요소 자체가 아닌, 배경 콘텐츠에만 효과가 적용됨

3. Color Filter(색상 강조)

  • contrast(80%) saturate(120%) 등의 backdrop-filter를 추가로 적용해, 유리 뒤 콘텐츠의 채도 증가·대비 감소로 선명한 색감 구현
    backdrop-filter: blur(20px) contrast(80%) saturate(120%);  
    

4. 굴절(Refraction) 시뮬레이션

  • 유리의 곡면이 배경을 비틀어 보이게 하는 굴절 효과는 CSS 단독으론 구현 한계가 있어, SVG 필터와 결합하여 구현

  • Displacement Map: SVG의 gradient를 활용해, 가장자리에선 픽셀을 압축하고 중앙부는 늘어나는 왜곡 맵(Identity Map)을 생성

    • 예시 SVG의 빨간/파란 그라디언트로 X/Y 방향 픽셀 이동량을 정의
    • 그라디언트 ramp를 조절해 가장자리 압축·중앙 확장 패턴을 설계
    • SVG를 Data URL로 변환해 feImage로 로드, feDisplacementMap에서 좌표 변형에 활용
  • Ripple Distortion: feTurbulence(노이즈 텍스처)와 추가 feDisplacementMap 조합으로 유리 표면의 미세한 파동까지 묘사

  • Chromatic Aberration(색수차): feColorMatrix, feOffset, feBlend 조합으로 RGB 각 채널을 분리·오프셋 후 합성하여, 실제 유리에서 관찰되는 빛 분산 효과 모방

CSS/SVG 효과 적용 방법

  • SVG filter를 정의한 후, filter: url(#filterId); 를 활용해 DOM 요소에 적용
  • 모든 효과가 결합된 필터 체인은 실제 유리 패널같은 질감·빛 왜곡·색상 변조를 동시에 재현함

호환성 및 성능 주의점

  • SVG displacement filter는 Chrome에서만 정상 지원. Safari, Firefox 등에서는 효과가 제한됨(Blur/Shadow만 남음)
  • Glass 요소가 많거나 애니메이션 적용 시 GPU 부하가 크고, 렌더링 성능 저하 발생
  • 현실적으로는 Hero/Feature 영역 등 강조가 필요한 일부 UI에만 사용하는 것이 적합함

참고 및 크레딧

이 분이 구현하신 게 더 자연스러운 것 같네요
https://v0.dev/chat/dynamic-frame-layout-1VUCCecq7Uy

웹에서 구현하기에는 아직 여전히 어색하네요ㅎㅎ