1P by GN⁺ 13시간전 | ★ favorite | 댓글 1개
  • CSS 코드로 고해상도 유리(glass) 효과를 구현하는 방법 제공
  • blur, 밝기(brightness), 채도(saturate) 등 시각적 필터와 다단계 그림자를 적용함
  • pseudo-element를 활용해 앞면과 뒷면의 레이어 효과와 질감(texture) 처리 구현
  • 간결한 CSS 클래스 하나만으로 다양한 UI에 적용 및 커스터마이즈 가능함
  • 고해상도 유리 효과를 빠르고 모던하게 웹 프로젝트에 도입하는 데 유리함

소개

이 CSS 코드는 웹 UI에서 고해상도 유리(glass) 효과를 생성하는 데 특화된 설정임. 기존의 glassmorphism 효과보다 더 세밀하고 깊이감 있는 연출이 가능하며, CSS의 단일 클래스 적용만으로 직관적으로 결과를 확인할 수 있음.

주요 내용

  • .glass3d 클래스에 blur(32px) , 밝기(0.85) , 채도(2.5) 등 다양한 시각 필터 효과와 컬러 및 노이즈 텍스처 삽입
  • 여러 단계의 box-shadow 구성으로 실제 입체감 있는 유리 느낌 구현
  • ::before pseudo-element에서 backdrop-filter, 색상, 노이즈 배경 이미지를 중첩하여 배경 투명도와 입체 질감 연출
  • ::after pseudo-element에서 내부(inset) 그림자를 추가해 실제 유리 표면에 빛이 반사되는 듯한 효과 제공
  • z-index 분리를 통해 레이어별로 효과가 충돌하지 않고 정상 표시될 수 있도록 구조화함
  • .glass3d > * 선택자를 통해 자식 요소의 콘텐츠 부분이 항상 가장 위에 나타나게 처리함

활용 배경 및 장점

  • 라이브러리나 외부 의존성 없이 단일 CSS 클래스로 모던하고 트렌디한 유리 이펙트 UI 구현이 가능함
  • UI 디자인 시스템, 카드, 팝업, 버튼 등에 손쉽게 적용 및 확장할 수 있어 웹 프론트엔드 개발자에게 매우 유용함
  • 실제 패턴 이미지를 활용한 texture와 다양한 색상 조합, 복수 단계 그림자 효과로 기존 glassmorphism 기법 대비 깊이감 및 명암 표현에 강점이 있음
Hacker News 의견
  • 자바스크립트로 페이지 요소에 실제 굴절 효과를 적용한 버전을 만들었으니 확인해보기 추천 https://real-glass.vercel.app/

  • 이 효과는 표면 바로 뒤에 있는 픽셀만 흐리게 처리하는 한계가 있음, 이 현상을 잘 설명한 Josh Comeau의 글(https://www.joshwcomeau.com/css/backdrop-filter/#the-issue)과 Hacker News 토론(https://news.ycombinator.com/item?id=42302907)을 참고 추천, 배경이 움직인다면 꽤 중요한 이슈지만 고정되어 있다면 보통 중요하지 않음

    • Josh의 멋진 글을 읽고 튜토리얼을 따라 구현하려 시도해봤음, 하지만 SVG 마스크로 border-radius 처리에서 문제가 발생, 하드코딩된 요소에서는 잘 작동했으나, 브랜드/컨테이너 쿼리에 따라 border-radius가 바뀌는 전체 컴포넌트 라이브러리에서 쓰기 위한 방법을 추가로 고민 중임
    • Josh의 솔루션은 직관적으로도 뭔가 잘못된 느낌, 주변 요소가 빛을 내는 물질이라고 가정하지만, 웹상의 "material"의 물리적 기본 특성이라고 생각하지 않음, 나는 기본적으로 material은 종이와 더 비슷하다고 가정
  • 꽤 멋지게 구현된 것 같음, 하지만 유리의 굴절 효과가 빠지면 Liquid Glass의 강한 레이어 시각 분리감이 사라짐, Material의 디자인 리소스를 보면 앱이 3D의 일관된 움직이는 레이어로 구성되어야 함을 강조, 하지만 실제로 2D로 구현하고 모든 요소가 섞이면 각 레이어 구분이 매우 어려움, 구석진 곳의 액션 버튼을 사람들이 못 찾는 경우가 많음, 모션이 크롬과 컨텐츠를 구분해주는 역할을 하긴 하지만 시각적으로 두드러지는 게 별로 없음, Liquid Glass의 가장 큰 장점은 edge distortion(가장자리 왜곡)이라 생각, 콘텐츠가 움직일 때 사람의 시각에서 즉시 잡히는 비선형 모션을 만들어줌, 움직임이 있을 때 레이어 구분이 더 뚜렷해짐, 이 중요한 굴절 요소가 여긴 빠져있음, SVG 필터로 edge distortion을 구현하는 게 쉽지 않고 궁극적으론 상당히 복잡한 작업, https://atlaspuplabs.com/blog/liquid-glass-but-in-css/… 의 단계별 설명을 참고하면 복잡성을 알 수 있음, 그리고 Liquid Glass의 다양한 구현 시도를 모아둔 CodePen Spark 컬렉션도 발견, 하드코딩된 SVG로 괜찮게 만든 레퍼런스도 함께 추천 https://codepen.io/spark/453 https://codepen.io/lucasromerodb/pen/vEOWpYM

    • Apple이 Liquid Glass를 통해 똑똑한 진입장벽(moat)을 만들었다고 생각, 누구든 저렴한 버전을 쉽게 만들 수 있지만, 진짜처럼 보이게 제대로 만들기는 굉장히 어려움, 우리는 매일 진짜 유리를 보기 때문에 "진짜 vs 가짜"를 직관적으로 구분할 수 있음, 그래서 모방 제품이 티가 나고, Apple은 "프리미엄 느낌"을 지킬 수 있음
    • Liquid Glass의 edge distortion이 정말 멋지다고 생각해서 언젠가 꼭 다시 만들어볼 계획, 현재 진행 중인 프로젝트는 디테일하게 다듬고, 브라우저 호환성을 신경쓰며, 실제 3D를 사용하지 않는 소재 구현에 중점을 둠, 그리고 레이어가 고정된 배경 위를 움직일 때 효과가 더 도드라진 것에 동의, 현재 개발 중인 데모 사이트는 이런 효과가 구현돼 있고, 아직 완성은 아님, 좋은 자료 소개에 감사
    • 유리의 굴절 효과가 레이어식 시각 분리감을 만든다는 의견에 동의, 하지만 나는 굴절 효과가 너무 산만하고, 일부 환경에서는 보기 안 좋다고 생각, 실제 유리의 물리 현상이긴 하지만 그게 꼭 필요하진 않음, skeuomorphism에서 제일 맘에 안 들었던 요소를 확대 적용한 느낌, 참고로 나는 iOS 7 이전 디자인을 더 선호했음
  • 효과 자체는 멋지지만, 나는 유리 느낌이 잘 안 든다고 느낌, 즉각적으로 느껴지는 차이는 빛이 bevel(모서리 곡면)에 아무 반응을 안 한다는 점, 빛이 유리에 반사돼서 조명/색상에 영향을 미치는 것도 기대, 단순히 blur 효과만으론 힘듦, 그리고 유리는 독특한 그림자(특히 caustics)도 만들 수 있는데, Apple도 이 부분까지는 신경쓰지 않은 듯, 현재 그림자는 단순 drop shadow처럼 보여서 3D 객체보다는 평면 카드 느낌만 강조됨, 이건 최근 트렌드의 핵심에서 벗어남, 이런 효과를 CSS만으로 구현하기 어렵고, 차라리 GPU에서 쉐이더로 돌리는 것이 더 적합할 듯

    • CSS로 할 수 없다면 방법이 무엇일지 궁금, GPU 쉐이더 효과를 일반 div에 적용할 수 있는지도 의문, 기본적인 HTML에 직접 GPU 효과를 넣을 수 없다면 결국 커스텀 캔버스 같은 걸로 새 렌더링 엔진을 만드는 게 더 나음, HTML은 이제 의미가 없고 <p> 태그로 텍스트만 전하고 나머지는 다 광고로 쓰이니까, 차라리 <p>만 남기고 GPU 통합을 개선한 완전히 새로운 시작이 필요
  • 이런 디자인 샘플을 수집하고 있음 https://github.com/swyxio/spark-joy
    관련 자료도 몇 개 추천

  • 모바일에서 박스를 숨기거나 접는 옵션이 있었으면 사용성이 훨씬 나았을 것 같은 느낌, 전체 화면을 박스가 차지해서 뒤의 효과가 잘 안 보임, 그래도 흥미로워서 큰 화면에서 다시 시도해볼 생각, 박스 숨김 옵션 추가가 많은 도움이 될 듯

  • 내 glass 구현체와 유사한 기법을 쓴 것 같음 https://news.ycombinator.com/item?id=42225481 특히 box shadow를 적극적으로 활용한 방식이 비슷

    • 당신 프로젝트 정말 멋짐, 그림자 레이어를 깊이 있게 여러 번 쓴 개발자가 나뿐만 아닌 걸보니 반가움, Light Rays 추가한 아이디어가 특히 인상적임
  • 웹 배경으로 효과가 좋게 쓰임

  • 내 핸드폰에서는 스크롤이 꽤 느림, 의도적으로 천천히 움직이는 다른 스크롤 효과가 있는지 아니면 glass 효과의 부작용인지 궁금

    • 재밌는 지적, 페이지에는 어떤 스크롤 효과도 없음, 실제로 어떤 기기와 브라우저, 네트워크 환경인지 공유해줬으면 좋겠음
    • 내 M4, 128GB 램 기기에서는 잘 돌아감
  • 정말 잘 만들었다고 생각, 컴퓨터 그래픽스가 “특별한 한 방법”이 아니라 실제로는 “5겹의 트릭”이라는 점에 매번 놀람, 크로스 브라우저 지원도 큰 도전이라고 생각, 어떤 부분이 가장 리소스를 많이 쓰는지 혹시 감이 있는지 궁금, 그냥 예상으론 backdrop-filter가 아닐까 싶음

    • 나도 여러 트릭이 필요할 거라 생각 못 했음, 가장 무거운 부분이 backdrop-filter의 blur 처리임, blur 값이 높을수록 더 많은 주변 픽셀 정보를 확인해서 렌더링함, 또 하나 리소스를 쓰는 부분이 스크롤할 때나 동영상 배경이 변할 때 glass 외관의 실시간 갱신임
    • 가끔은 무언가 “가운데 정렬”만 하려고 해도 “5겹의 트릭”을 써야 하는 경우가 있음