Technote

테마 · 플러그인 입문

연재 워드프레스에 디자인 시스템 심기 8부 중 3부

간격 척도 — 4의 배수가 만드는 리듬과 예외의 비용

간격을 매번 눈으로 정하면 12 · 13 · 14 · 15 가 한 화면에 섞입니다. 척도를 정하면 선택이 빨라지고, 화면이 저절로 정돈됩니다.

간격은 색보다 조용히 무너집니다. 색이 틀리면 눈에 띄지만, 간격이 12px 여야 할 자리에 13px 이 들어가면 아무도 지적하지 못합니다. 다만 화면 전체가 어딘가 정돈되지 않은 느낌으로 남습니다. 원인을 지목할 수 없는 종류의 어긋남입니다.

왜 4의 배수인가

간격 척도를 4의 배수로 잡는 이유는 미학이 아니라 선택지를 줄이기 위해서입니다. 0부터 96까지 자유롭게 고르면 후보가 97개지만, 4의 배수로 제한하고 큰 쪽을 성기게 두면 후보가 열두어 개로 줍니다. 후보가 적으면 결정이 빨라지고, 같은 상황에서 같은 값이 선택될 확률이 올라갑니다 — 그것이 곧 일관성입니다.

실용적인 이유도 있습니다. 4는 흔한 본문 크기(16px)와 나누어떨어지고, 화면 배율이 1.25배나 1.5배가 되어도 소수점이 덜 생깁니다.

간격 척도의 세 구간 — 작은 쪽은 촘촘하게, 큰 쪽은 성기게 둔다

작은 값은 촘촘하게(4 · 8 · 12 · 16), 큰 값은 성기게(48 · 64 · 80 · 96) 둡니다. 4px 차이는 아이콘과 글자 사이에서는 확실히 보이지만 섹션 사이에서는 아무도 못 느낍니다. 척도는 등차수열이 아니라 지각에 맞춘 수열이어야 합니다.

세 가지 간격만 정하면 대부분 끝납니다

척도를 만들었다고 모든 자리에 자유롭게 쓰는 것은 아닙니다. 레이아웃의 간격은 사실상 세 종류입니다.

요소 사이는 아이콘과 라벨, 제목과 부제처럼 한 덩어리로 읽혀야 하는 것들 사이입니다. 블록 사이는 카드와 카드, 문단과 문단처럼 서로 다른 덩어리 사이입니다. 섹션 사이는 화면의 장면이 바뀌는 자리입니다. 이 세 값을 토큰으로 고정해 두면 새 컴포넌트를 만들 때 간격을 고민할 일이 거의 없어집니다.

예외 하나가 척도 전체를 무효로 만듭니다

어느 화면에서 제목이 조금 붙어 보여 margin-top: 13px 을 넣습니다. 그 자체로는 아무 문제가 없습니다. 문제는 그다음입니다 — 다음 사람이 그 코드를 보고 “여기서는 척도를 안 쓰는구나” 라고 배웁니다.

예외가 필요하다는 것은 척도가 부족하다는 뜻이다 — 예외 대신 척도를 고친다

정말로 그 자리에 13px 이 필요하다면 척도에 값이 부족한 것입니다. 척도를 고치는 쪽을 택하세요. 척도 수정은 한 줄이고, 예외는 영원히 늘어납니다.

워드프레스에서는 여기에 한 가지가 더 붙습니다 — 편집자가 스페이서 블록으로 임의의 간격을 만들 수 있다는 점입니다. 그 값은 척도 밖에 있고, 화면에서만 드러납니다. 이 구멍을 닫는 방법이 5 · 6회차의 주제입니다.

레이아웃 구조가 성능과 만나는 지점은 테마 · 플러그인 아카이브에 이어지고, 실제 작업에서 이런 규약을 어떻게 세우고 검증하는지는 작업 과정에 절차 그대로 공개돼 있습니다.

다음 회차

색과 간격의 목록이 생겼습니다. 다음 회차는 그것을 실제 테마에 심는 방법 — CSS 커스텀 프로퍼티로 :root 한 곳에서 사이트 전체가 바뀌게 만듭니다.

이 주제의 다른 글

노하우 목록으로

테마 · 플러그인 입문

커스텀 포스트 타입은 언제 자기 자리를 얻나

대부분은 페이지로 충분합니다. 다만 페이지로 버틸 수 없어지는 지점은 꽤 뚜렷하고, 그 신호는 개수가 아니라 "목록으로 다뤄야 하는가" 입니다.

기획자 3분 읽기

테마 · 플러그인 입문

업데이트가 깨지는 진짜 이유는 코어가 아닙니다

"지난번에 올렸다가 깨져서" 미루고 있다면, 그때 깨진 것이 무엇이었는지 다시 볼 필요가 있습니다. 원인을 바르게 지목하면 다음 업데이트의 준비 방법이 달라집니다.

운영 · 관리자 4분 읽기

₩270,000 · 신청하기