실무에 바로 적용할 수 있는 웹 제작 꿀팁 및 유용한 자료실 공간입니다.
나눔웹이 제공하는 핵심 노하우와 마케팅 인사이트를 자유롭게 활용해 보십시오.

나눔웹 실무 꿀팁

CSS 변수로 유지보수와 테마 기능을 한 번에! (CSS Custom Properties)

웹사이트 제작 시, 수많은 CSS 파일에서 같은 색상 코드나 폰트 크기 값을 반복해서 입력하고 계신가요?
나중에 디자인을 변경하려면 모든 CSS 파일을 다 뒤져야 하는 번거로움에 CSS 변수가 강력한 해결책을 제시합니다.

💡 CSS 변수란 무엇일까요?

자바스크립트의 변수처럼 CSS에서도 값을 저장하고, 그 이름을 호출해서 사용할 수 있는 기능입니다. 디자인 요소를 한곳에서 중앙 관리할 수 있게 도와줍니다.

1. CSS 변수 정의하고 사용하기

CSS 변수는 주로 :root라는 특별한 선택자에 정의합니다. 이렇게 정의된 변수는 웹사이트 전체에서 사용할 수 있습니다.
변수 이름은 반드시 두 개의 하이픈(`--`)으로 시작해야 하며, 사용할 때는 `var()` 함수로 감싸서 호출합니다.

/* CSS 변수 정의 ( :root 에 정의 ) */
:root {
    /* 디자인 토큰 정의 */
    --main-color: #cc2b2b; /* 메인 컬러 */
    --accent-color: #f59f00; /* 포인트 컬러 */
    --text-main: #111111; /* 메인 텍스트 컬러 */
    --text-sub: #555555; /* 서브 텍스트 컬러 */
    --font-base: 'Pretendard', sans-serif; /* 기본 폰트 */
}

/* 정의한 CSS 변수 사용 */
.header {
    background-color: var(--main-color); /* 변수 사용 */
    color: #fff;
    font-family: var(--font-base); /* 변수 사용 */
}

.button {
    background-color: var(--accent-color); /* 변수 사용 */
    color: var(--text-main); /* 변수 사용 */
}

2. CSS 변수로 테마 기능 쉽게 구현하기

CSS 변수의 진가는 다크 모드나 다양한 디자인 테마를 구현할 때 발휘됩니다.
특정 클래스나 속성에 따라 CSS 변수 값을 다른 값으로 재정의하기만 하면 됩니다.

/* 다크 모드 테마 정의 */
.body[data-theme="dark"] {
    --main-color: #9a0007; /* 다크 모드 메인 컬러 */
    --text-main: #ffffff; /* 다크 모드 메인 텍스트 컬러 */
    --text-sub: #dddddd; /* 다크 모드 서브 텍스트 컬러 */
    --background: #111111; /* 다크 모드 배경 컬러 */
}

/* 다크 모드 적용 예시 */
.body[data-theme="dark"] .nw-board-notice {
    background: var(--background); /* 변수 사용 */
    color: var(--text-sub); /* 변수 사용 */
}

.body[data-theme="dark"] .nw-board-notice-title {
    color: var(--text-main); /* 변수 사용 */
}

나눔웹은 복잡한 CSS를 효율적으로 관리하여 사이트의 확장성을 높입니다.

CSS 변수를 통해 디자인 변경이나 다크 모드 같은 테마 기능을 쉽게 구현해 보세요.


List of Articles
번호 분류 제목 글쓴이
82 UI/UX 고정 헤더에 제목이 가려질 때, scroll-margin-top으로 앵커 맞추는 법 new 나눔웹
81 퍼블리싱 CSS 컨테이너 쿼리 쓰는 법, 화면이 아니라 카드 폭에 맞춰 반응하기 new 나눔웹
80 UI/UX 폼 에러가 입력 전에 뜨는 문제, :user-invalid로 고치는 법 나눔웹
79 모바일 모바일 브라우저 상단바 색 맞추기, theme-color 메타 태그 쓰는 법 나눔웹
78 마케팅 문의 완료 페이지 noindex 설정법, 검색에 잡히지 않게 막는 순서 나눔웹
77 UI/UX 문의란이 내용만큼 늘어나게, CSS field-sizing으로 맞추는 법 나눔웹
76 웹 성능 긴 페이지 스크롤이 무거울 때, content-visibility로 렌더링 줄이는 법 나눔웹
75 모바일 모바일 100vh 잘림, dvh·svh로 주소창 높이까지 맞추는 법 나눔웹
74 마케팅 구글 서치 콘솔 등록 방법, 새 홈페이지 소유권 확인부터 색인 요청까지 나눔웹
73 퍼블리싱 CSS :has() 선택자 활용법, 자식 상태에 따라 부모 박스 스타일 바꾸기 나눔웹
72 웹 성능 반응형 이미지 srcset 쓰는 법, 모바일에 PC용 큰 사진을 보내지 않으려면 나눔웹
71 퍼블리싱 제목 줄바꿈이 어색할 때, text-wrap: balance로 한 단어만 남는 문제 정리 나눔웹
70 마케팅 robots.txt 작성법, 검색에 안 보여야 할 페이지와 사이트맵 위치 알려주는 순서 나눔웹
69 UI/UX 스켈레톤 로딩 화면 만들기, 빈 화면 대신 회색 자리 표시로 기다림 줄이는 법 나눔웹
68 퍼블리싱 모바일에서 표(table)가 깨질 때, 가로 스크롤로 감싸거나 카드형으로 바꾸는 법 나눔웹
67 웹 성능 gzip 압축 설정법, 홈페이지 HTML·CSS 파일을 작게 보내 로딩 줄이는 순서 나눔웹
66 모바일 아이폰에서 숫자가 파란 전화 링크로 바뀔 때, format-detection으로 막는 법 나눔웹
65 마케팅 사이트맵(sitemap.xml) 만들기, 새 페이지가 검색에 늦게 잡힐 때 작성과 제출법 나눔웹
64 UI/UX FAQ 아코디언 만들기, details와 summary 태그로 스크립트 없이 접고 펴는 법 나눔웹
63 웹 성능 PageSpeed Insights 점수 보는 법, 실사용자 데이터와 실험실 점수가 다를 때 나눔웹
Board Pagination Prev 1 2 3 4 5 Next
/ 5
rhwlsghkcocndgus XE2.1.39 STAGE1.5.4