티스토리 뷰
1. 반응형 폰트의 마법, clamp() 함수
clamp()는 미디어 쿼리 없이도 폰트 크기가 화면 너비에 따라 유동적으로 변하게 만드는 함수입니다.
- 구조: font-size: clamp(최솟값, 권장값, 최대값);
- 작동 원리: 브라우저 너비에 따라 '권장값'을 유지하다가, 너무 작아지면 '최솟값'에서 멈추고, 너무 커지면 '최대값'에서 멈춥니다.
🛠️ 실무 적용 예시
과거에는 PC와 모바일 폰트 크기를 각각 따로 지정했지만, 이제는 한 줄로 해결합니다.
CSS
h2 {
/* 최소 1.5rem, 화면 너비의 5%만큼 가변, 최대 3rem */
font-size: clamp(1.5rem, 5vw, 3rem);
line-height: 1.2;
}
- 모바일: 화면이 작아져도 1.5rem 이하로는 줄어들지 않아 가독성을 지킵니다.
- 태블릿: 5vw(화면 너비의 5%)가 적용되어 부드럽게 크기가 변합니다.
- PC: 아무리 모니터가 커도 3rem 이상으로는 커지지 않아 레이아웃을 유지합니다.
2. CSS 변수(--variable)를 활용한 디자인 시스템
디자인 시스템의 핵심은 **'일관성'**과 **'유지보수'**입니다. 색상이나 간격을 변수로 관리하면, 코드 한 줄만 바꿔서 전체 사이트의 테마를 바꿀 수 있습니다.
🛠️ 디자인 시스템 설계 예시
게시판의 메인 컬러와 간격을 정의해 보겠습니다.
CSS
:root {
/* 컬러 시스템 */
--primary-color: #2563eb;
--primary-hover: #1d4ed8;
--bg-soft: #f1f5f9;
--text-main: #1e293b;
--text-muted: #64748b;
/* 간격 및 곡률 */
--spacing-base: 1rem;
--radius-lg: 12px;
--radius-sm: 6px;
/* 폰트 크기 시스템 (clamp 활용) */
--font-size-h: clamp(1.5rem, 4vw, 2.25rem);
--font-size-base: 1rem;
}
/* 변수 사용하기 */
.container {
background-color: var(--bg-soft);
padding: var(--spacing-base);
}
.btn-primary {
background-color: var(--primary-color);
border-radius: var(--radius-sm);
color: white;
}
.btn-primary:hover {
background-color: var(--primary-hover);
}
3. 다크 모드(Dark Mode) 구현의 핵심
변수와 디자인 시스템을 구축해두면 다크 모드 구현이 놀라울 정도로 쉬워집니다. :root의 변수값만 뒤집어주면 되기 때문입니다.
CSS
/* 다크 모드 설정 */
@media (prefers-color-scheme: dark) {
:root {
--primary-color: #60a5fa; /* 좀 더 밝은 파란색 */
--bg-soft: #0f172a; /* 어두운 배경 */
--text-main: #f8fafc; /* 밝은 텍스트 */
--text-muted: #94a3b8;
}
}
💡 정리: 왜 이 방식이 좋은가요?
- 압도적인 효율성: 수백 개의 미디어 쿼리(@media)를 작성할 필요가 없습니다.
- 브랜드 일관성: 메인 컬러가 변경되어도 코드 한 곳만 수정하면 전체 게시판에 즉시 반영됩니다.
- 가독성: clamp()를 통해 어떤 기기에서 접속해도 텍스트가 너무 작거나 커서 읽기 불편한 상황을 원천 봉쇄합니다.
지금까지 구축한 게시판 소스의 상단에 이 :root 변수들을 정의하고, 스타일 값을 var()로 교체해보세요. 코드의 질이 한 단계 업그레이드될 것입니다.
※ 해당 내용은 Google Gmini3.0에서 작성되었습니다.
'WEB > css' 카테고리의 다른 글
| 검색영역 가로 3개 반응형 (0) | 2026.01.26 |
|---|---|
| 다크 모드 전환 스위치 (0) | 2026.01.14 |
| 폼(Form) 요소의 상태를 제어하거나 특정한 위치를 타겟팅할 때 유용한 선택자 (0) | 2026.01.14 |
| 논리 가상 클래스 선택자 :where() / :is() / :has() / :not() (0) | 2026.01.14 |
| CSS 선택자의 종류와 기능 (0) | 2026.01.14 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 파비콘사이즈
- 자바스크립트countiue
- 쇼팬하우어 #좋은책
- 정보처리기사 #정보처리기사요약 #정보처리기사요점정리
- ajax
- css미디어쿼리 #미디어쿼리 #mediaquery
- 자바스크립트break
- thymeleaf
- SQL명령어 #SQL
- 좋은책 #밥프록터 #부의원리
- 바지락칼국수 #월곡동칼국수 #칼국수맛집
- 광주분식 #광주분식맛집 #상추튀김 #상추튀김맛집 #광주상추튀김
- echart
- 테스크탑무선랜카드 #무선랜카드 #아이피타이무선랜카드 #a3000mini #무선랜카드추천
- 자바스크립트 #javascript #math
- 무료폰트 #무료웹폰트 #한수원한돋움 #한수원한울림 #한울림체 #한돋움체
- 파비콘 #파비콘 사이트에 적용
- iptime와이파이증폭기 #와이파이증폭기설치
- 와이파이증폭기추천 #와이파이설치
- 연명의료결정제도 #사전연명의료의향서 #사전연명의료의향서등록기관 #광주사전연명의료의향서
- // 사진직: 데이터가 없으면 DEFAULT_IMG 사용 const profileSrc = (d.img && d.img !== "") ? d.img : DEFAULT_IMG;('#user-photo').attr('src'
- jQuery #jQuery이미지슬라이드 #이미지슬라이드
- jdk #jre
- 좋은책
- 탭메뉴자바스크립트
- 증폭기 #아이피타임증폭기
- 자바스크립트정규표현식
- sw기술자평균임금 #2025년 sw기술자 평균임금
- lg그램pro #lg그램 #노트북 #노트북추천 #lg노트북
- 썬크림 #닥터지썬크림 #내돈내산 #내돈내산썬크림 #썬크림추천 #spf50썬크림 #닥터지메디유브이울트라선
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
글 보관함
