filter
요소에 밝기, 그레이스케일, 색상 조절 등 시각적 효과를 적용합니다. 자식 요소를 포함한 전체 렌더링 결과에 영향을 주며, backdrop-filter는 요소 뒤의 배경에만 효과를 적용합니다.
클래스 목록
| 클래스 | CSS | 설명 |
|---|---|---|
fbr150p | filter: brightness(150%) | 밝기 150% (밝게) |
fbr80p | filter: brightness(80%) | 밝기 80% (어둡게) |
fc120p | filter: contrast(120%) | 대비 120% (선명) |
fc80p | filter: contrast(80%) | 대비 80% (부드럽게) |
fg100p | filter: grayscale(100%) | 완전한 흑백 |
fg50p | filter: grayscale(50%) | 50% 흑백 |
fhr90deg | filter: hue-rotate(90deg) | 색상 90도 회전 |
fhr180deg | filter: hue-rotate(180deg) | 색상 180도 회전 |
fi100p | filter: invert(100%) | 색상 반전 (네거티브) |
fo50p | filter: opacity(50%) | 불투명도 50% |
fsa200p | filter: saturate(200%) | 채도 200% (선명한 색상) |
fds2px4px8px000000 | filter: drop-shadow(2px 4px 8px #000000) | 드롭 섀도우 |
finh | filter: inherit | 부모 필터 상속 |
fu | filter: unset | 필터 초기화 |
bfb5px | backdrop-filter: blur(5px) | 배경 블러 5px |
bfb12px | backdrop-filter: blur(12px) | 배경 블러 12px |
패턴 구조
filter 클래스는 필터 함수의 약어 + 값 + 단위로 구성됩니다.
| 접두사 | 함수 | 단위 | 예시 |
|---|---|---|---|
fbr | brightness() | p (%) | fbr120p, fbr150p, fbr80p |
fc | contrast() | p (%) | fc80p, fc120p, fc200p |
fg | grayscale() | p (%) | fg100p, fg50p, fg0p |
fhr | hue-rotate() | deg | fhr90deg, fhr180deg, fhr270deg |
fi | invert() | p (%) | fi100p, fi50p |
fo | opacity() | p (%) | fo50p, fo80p |
fsa | saturate() | p (%) | fsa200p, fsa50p |
fs | sepia() | p (%) — font-size와 충돌 주의 | fs100p (제한적) |
fds | drop-shadow() | px + HEX | fds2px4px8px000000 |
finh | filter: inherit | 없음 | finh |
fu | filter: unset | 없음 | fu |
bfb | backdrop-filter: blur() | px | bfb5px, bfb12px |
bfbr | backdrop-filter: brightness() | p (%) | bfbr80p, bfbr120p |
시각적 비교
각 filter가 요소에 미치는 효과를 비교합니다.
원본 —
필터 없음. 비교 기준입니다.
Brightness 150% — fbr150p
fbr150p: 밝기 증가. 전체적으로 밝아집니다.
Brightness 50% — fbr50p
fbr50p: 밝기 감소. 전체적으로 어두워집니다.
Grayscale — fg100p
fg100p: 완전한 흑백. 색상 정보가 제거됩니다.
Contrast — fc200p
fc200p: 대비 강화. 밝은 부분은 더 밝고 어두운 부분은 더 어둡습니다.
Hue Rotate — fhr90deg
fhr90deg: 색상 90도 회전. 모든 색상이 변경됩니다.
Invert — fi100p
fi100p: 색상 반전. 네거티브 효과입니다.
Saturate — fsa200p
fsa200p: 채도 200%. 색상이 더 선명해집니다.
Opacity — fo50p
fo50p: 불투명도 50%. 반투명 효과입니다.
필터별 상세
filter: blur() — 미지원
fb = flex-basis (blur 아님!)
fb 접두사는 flex-basis로 파싱됩니다. filter: blur()는 현재 Atomic CSS에서 지원하지 않습니다. 배경 블러가 필요하면 bfb(backdrop-filter: blur)를 사용하세요.
fbrfilter: brightness()
요소의 밝기를 조절합니다. 100%가 원본이며, 그 이상은 밝아지고 이하는 어두워집니다. 이미지 호버 효과나 다크모드 조정에 유용합니다.
<!-- 어두운 오버레이 효과 -->
<img class="fbr50p" src="hero.jpg" />
<!-- 호버 시 밝기 증가 -->
<img class="fbr80p hover-fbr100p tall200msease cp" src="..." />
<!-- 밝게 강조 -->
<div class="fbr150p">밝게 처리된 영역</div>주요 클래스
fbr50p | filter: brightness(50%) |
fbr80p | filter: brightness(80%) |
fbr100p | filter: brightness(100%) |
fbr120p | filter: brightness(120%) |
fbr150p | filter: brightness(150%) |
fbr200p | filter: brightness(200%) |
fgfilter: grayscale()
요소를 흑백으로 변환합니다. 100%면 완전한 흑백, 0%면 원본 색상입니다. 비활성 상태 표시, 호버 시 컬러 복원 효과에 자주 사용합니다.
<!-- 흑백 이미지 (호버 시 컬러 복원) -->
<img class="fg100p hover-fg0p tall300msease cp" src="..." />
<!-- 비활성 상태 표시 -->
<div class="fg100p o50">비활성 상태</div>
<!-- 부분 흑백 -->
<img class="fg50p" src="..." />주요 클래스
fg0p | filter: grayscale(0%) |
fg25p | filter: grayscale(25%) |
fg50p | filter: grayscale(50%) |
fg75p | filter: grayscale(75%) |
fg100p | filter: grayscale(100%) |
fdsfilter: drop-shadow()
요소의 실제 형태를 따르는 그림자를 추가합니다. box-shadow와 달리 투명 영역을 무시하고 콘텐츠 형태에 맞는 그림자를 생성합니다. PNG 아이콘, SVG 등에 유용합니다.
패턴
fds{X}px{Y}px{blur}px{HEX6}<!-- 아이콘에 그림자 -->
<svg class="fds2px4px8px000000">...</svg>
<!-- PNG 이미지에 형태를 따르는 그림자 -->
<img class="fds4px4px10px000000" src="logo.png" />
<!-- 컬러 그림자 -->
<div class="fds2px4px8px6366F1">인디고 그림자</div>예시 클래스
fds2px2px4px000000 | filter: drop-shadow(2px 2px 4px #000000) |
fds2px4px8px000000 | filter: drop-shadow(2px 4px 8px #000000) |
fds4px4px10px6366F1 | filter: drop-shadow(4px 4px 10px #6366F1) |
fds0px0px8px000000 | filter: drop-shadow(0px 0px 8px #000000) |
bf*backdrop-filter
요소 자체가 아닌 요소 뒤의 배경에 필터를 적용합니다. 글래스모피즘(유리 효과) 구현에 핵심이며, bf 접두사 뒤에 filter와 동일한 함수 약어를 사용합니다.
<!-- 글래스모피즘 (유리 효과) -->
<div class="bfb12px bg255-255-255-10 br12px p2rem">
배경이 블러되는 유리 효과 오버레이
</div>
<!-- 어두운 글래스 -->
<div class="bfb10px bg0-0-0-50 br8px p2rem cFFFFFF">
반투명 어두운 오버레이
</div>
<!-- 헤더에 글래스 효과 -->
<header class="pf t0 l0 w100p bfb12px bg0-0-0-30 py12px px2rem zi100">
<nav>네비게이션</nav>
</header>주요 클래스
bfb5px | backdrop-filter: blur(5px) |
bfb10px | backdrop-filter: blur(10px) |
bfb12px | backdrop-filter: blur(12px) |
bfb2rem | backdrop-filter: blur(2rem) |
bfbr80p | backdrop-filter: brightness(80%) |
bfbr120p | backdrop-filter: brightness(120%) |
호버 조합
transition과 함께 사용하면 부드러운 필터 전환 효과를 만들 수 있습니다.
<!-- 흑백 → 컬러 (포트폴리오) -->
<img class="fg100p hover-fg0p tall300msease cp" src="..." />
<!-- 밝기 조절 (갤러리) -->
<img class="fbr80p hover-fbr110p tall200msease cp" src="..." />
<!-- 채도 조절 -->
<img class="fsa50p hover-fsa200p tall300msease cp" src="..." />
<!-- 반전 → 원본 -->
<img class="fi100p hover-fi0p tall300msease cp" src="..." />| 클래스 조합 | 효과 |
|---|---|
fg100p hover-fg0p tall300msease | 흑백에서 컬러로 전환 (포트폴리오, 팀 소개) |
fbr80p hover-fbr110p tall200msease | 어두운 상태에서 밝게 (이미지 갤러리) |
fsa50p hover-fsa200p tall300msease | 저채도에서 고채도로 (이미지 강조) |
fi100p hover-fi0p tall300msease | 반전에서 원본으로 (인터랙티브 효과) |
o50 hover-o100 fg100p hover-fg0p tall300msease | 페이드 + 흑백 해제 조합 |
drop-shadow vs box-shadow
fds(drop-shadow)와 box-shadow는 모두 그림자를 추가하지만, 적용 방식이 다릅니다.
| drop-shadow (fds) | box-shadow | |
|---|---|---|
| 적용 대상 | 콘텐츠의 실제 형태 (투명 영역 무시) | 요소의 박스 (border-box 기준) |
| 투명 PNG/SVG | 형태를 따라 그림자 생성 | 사각 박스 기준 그림자 |
| inset 지원 | 불가 | 가능 (내부 그림자) |
| spread 지원 | 불가 | 가능 (그림자 확장) |
| 다중 적용 | CSS에서만 가능 | 쉼표로 다중 적용 가능 |
| 주요 용도 | 아이콘, 비정형 요소 그림자 | 카드, 버튼, 박스 그림자 |
팁 & 주의사항
자식 요소 포함
filter는 요소와 모든 자식에 적용됩니다. 부모에 fg100p를 주면 자식도 흑백이 됩니다. 배경만 블러하려면 bfb5px(backdrop-filter)를 사용하세요.
drop-shadow는 형태를 따름
fds는 투명 영역을 무시하고 실제 콘텐츠 형태에 맞는 그림자를 생성합니다. PNG 아이콘이나 SVG에 그림자를 줄 때 box-shadow보다 자연스럽습니다.
필터 조합 불가
Atomic CSS에서 한 요소에 여러 filter 클래스를 적용하면 마지막 값만 적용됩니다. 여러 필터를 동시에 사용하려면 중첩 요소에 각각 적용하세요.
성능 고려
filter와 backdrop-filter는 GPU를 사용하지만, 큰 요소나 많은 요소에 적용하면 성능에 영향을 줄 수 있습니다. 특히 모바일에서 backdrop-filter의 블러 값은 적절히 제한하세요.