웹 디자인의 지도
포스터를 만드는 사람은 먼저 종이 크기를 정한다. A2라면 A2 안에서 모든 것을 짜고, 인쇄된 포스터는 누가 보든 같은 크기다. 웹 페이지는 그렇지 않다. 같은 주소가 손바닥만 한 휴대폰에서도, 책상 위의 넓은 모니터에서도, 글자를 두 배로 키워 둔 할머니의 휴대폰에서도 열린다. 디자이너는 그 화면을 고를 수 없다. 이 장은 크기를 정할 수 없는 캔버스 위에서 디자인한다는 것이 무엇인지 몇 개의 시뮬레이터로 둘러보고, 앞으로 열두 장에서 풀어 갈 질문을 화면·배치·상호작용·쓰임의 네 갈래로 나누어 한 장의 지도 위에 펼친다.
- 웹 페이지가 종이와 달리 "크기를 정할 수 없는 캔버스"라는 것을 같은 페이지의 세 화면으로 확인한다.
- 고정폭 레이아웃과 흐르는 레이아웃이 좁은 화면과 넓은 화면에서 각각 어떻게 무너지는지 창 폭을 끌며 본다.
- 글자 크기 설정, 확대, 손가락과 키보드처럼 화면을 바꾸는 것이 디자이너가 아니라 사용자라는 것을 설명한다.
- 페이지의 무게가 첫 화면이 뜨는 시간을 정한다는 것을 단순한 모형으로 본다.
- 웹 디자인의 통설 가운데 근거가 약한 것을 가려내고, 화면·배치·상호작용·쓰임의 네 갈래로 이 책의 지도를 그린다.
크기를 정할 수 없는 캔버스
책방의 행사 포스터와 책방의 웹사이트를 나란히 놓고 생각해 본다. 포스터는 종이 한 장이다. 디자이너는 종이의 가로세로를 알고, 제목이 어디에 몇 밀리미터로 들어가는지 정할 수 있다. 인쇄가 끝나면 그 배치는 바뀌지 않는다. 웹사이트는 같은 내용이 어떤 크기의 창에 담길지 모르는 채로 만든다. 지하철에서 휴대폰으로 행사 일정을 보는 사람, 회사 모니터에서 창을 반만 열어 둔 사람, 태블릿을 가로로 눕힌 사람이 모두 같은 주소를 연다.
웹 페이지가 놓이는 이 창 안의 영역을 뷰포트(Viewport)라고 한다. 브라우저 창에서 주소창과 도구 막대를 뺀, 페이지가 실제로 그려지는 사각형이다. 뷰포트의 폭은 기기와 창 크기, 화면을 세웠는지 눕혔는지, 사용자가 확대했는지에 따라 달라진다. 웹 디자인의 거의 모든 문제는 이 사실 하나에서 출발한다. 뷰포트를 어떻게 재는지는 2장에서 자세히 다룬다.
이 생각은 웹이 생길 때부터 있었다. 웹을 처음 만든 팀 버너스리(Tim Berners-Lee)의 첫 웹 페이지(1991)는 글과 링크뿐이었고, 글줄은 창 폭에 따라 저절로 다시 흘렀다. 그 뒤 디자이너들이 인쇄물처럼 정확한 배치를 원하면서 페이지 폭을 픽셀 수로 못 박는 방식이 퍼졌다. 웹 디자이너 존 올솝(John Allsopp)은 글 「웹 디자인의 도」(A Dao of Web Design, A List Apart, 2000)에서, 웹을 종이처럼 통제하려 하지 말고 통제할 수 없다는 성질을 받아들이자고 주장했다. 10년 뒤 이선 마콧(Ethan Marcotte)이 같은 잡지에 쓴 「반응형 웹 디자인」(Responsive Web Design, 2010)은 흐르는 그리드, 늘었다 줄었다 하는 이미지, 창 폭에 따라 규칙을 바꾸는 미디어 쿼리를 묶어 이름을 붙였고, 이 말은 곧 업계의 기본어가 되었다(5장).
아래 시뮬레이터는 책방 E의 가상 첫 화면을 세 가지 폭에 띄운다. 휴대폰(360), 태블릿(768), 노트북(1280)이다. 숫자는 CSS 픽셀로 잰 뷰포트 폭이다. "흐르는 레이아웃"은 폭마다 배치를 다시 짠 페이지, "1440 시안 그림 그대로"는 넓은 노트북 화면(1440)에서 한 장의 그림으로 완성한 시안을 화면 폭에 맞춰 줄이거나 늘려 넣은 것이다.
같은 페이지, 세 화면
흐르는 레이아웃의 세 화면은 서로 다르게 생겼지만 같은 페이지다. 내용과 순서(다음 모임 → 소개 → 행사 일정 → 신간)는 같고, 놓이는 방식만 폭에 맞춰 바뀐다. 반대로 한 장의 그림으로 완성한 시안은 어느 한 폭에서만 맞는다. 줄여 넣으면 글자가 깨알이 되고, 늘리면 흐려진다. 웹 디자이너가 만드는 것은 한 장의 그림이 아니라 폭이 바뀔 때 무엇이 함께 바뀌어야 하는지에 대한 약속이다. 이 책은 그 약속을 하나씩 만들어 간다.
고정과 흐름
2010년대 초까지 많은 웹사이트는 페이지 폭을 960픽셀 같은 값으로 못 박았다. 그 무렵 사무실 모니터의 흔한 폭(1024)에 여백을 조금 남기면 960 안팎이 되었고, 960은 2, 3, 4, 5, 6, 8, 10, 12로 나누어떨어져 단을 나누기도 편했다. 이런 페이지를 고정폭 레이아웃(Fixed-width layout)이라고 한다. 창이 넓으면 페이지는 가운데 서고 양옆이 빈다. 창이 좁으면 페이지가 잘려 옆으로 밀어야 하거나, 휴대폰 브라우저가 페이지 전체를 작게 줄여 보여 준다.
그 반대가 흐르는 레이아웃(Fluid layout)이다. 폭을 픽셀 수가 아니라 창에 대한 비율이나 남는 공간으로 정해서, 창이 바뀌면 내용이 그 안을 채우며 다시 흐른다. 흐르는 레이아웃에도 약점이 있다. 아주 넓은 창에서는 글줄이 끝없이 길어진다. 그래서 흔히 흐르게 하되 최대 폭을 두어 일정 폭 이상에서는 더 넓어지지 않게 한다.
아래 시뮬레이터의 오른쪽 손잡이를 끌어 창 폭을 320에서 1600까지 바꿔 본다. 위의 눈금은 CSS 픽셀이다. 세 가지 방식을 바꿔 가며 좁은 쪽과 넓은 쪽에서 각각 무엇이 무너지는지 본다.
창 폭을 끌어 보기: 고정 960과 흐름
좁은 창에서 고정폭 페이지가 보이는 두 가지 모습, 곧 통째로 줄어드는 것과 옆이 잘리는 것은 둘 다 실패다. 줄어든 페이지는 손가락으로 벌려 확대한 뒤 글줄마다 좌우로 끌며 읽어야 하고, 잘린 페이지는 중요한 버튼이 화면 밖에 있다는 것조차 모를 수 있다. 넓은 창의 빈 여백은 그보다 덜 해롭지만, 넓은 모니터를 가진 사람에게 페이지가 손바닥만 하게 보이는 것도 좋은 경험은 아니다. 흐르는 레이아웃은 이 두 끝을 모두 다루려는 방식이고, 최대 폭과 중단점(창 폭에 따라 배치 규칙을 바꾸는 지점)이 그 세부다. 단과 거터는 4장, 중단점은 5장에서 다룬다.
화면을 정하는 것은 사람이다
창 폭만이 아니다. 웹 페이지를 보는 사람은 디자이너가 모르는 사이에 화면을 바꾼다. 휴대폰의 글자 크기 설정을 키우고, 브라우저에서 페이지를 확대하고, 운영체제를 어두운 화면 모드로 쓰고, 움직임을 줄이는 설정을 켜 둔다. 화면 낭독기로 페이지를 귀로 듣는 사람도 있고, 마우스 없이 키보드만 쓰는 사람도 있다. 이런 설정은 대개 그 사람에게 꼭 필요해서 켠 것이다. 웹 페이지가 존중해야 하는 것은 디자이너의 시안이 아니라 이 설정들이다.
특히 글자 크기 설정은 레이아웃을 가장 자주 무너뜨린다. 시안을 기본 글자 크기로만 그리면, 글자가 커졌을 때 넘칠 자리가 없다. 아래 시뮬레이터는 휴대폰(360) 또는 태블릿(768) 폭의 첫 화면을 두 개 나란히 놓는다. 왼쪽은 기본 글자 크기, 오른쪽은 슬라이더로 키운 글자 크기다. "헤더 높이 고정"은 시안에서 잰 머리 부분의 높이를 그대로 못 박은 경우다.
글자를 키우면 메뉴는 어디로 가나
겹친 메뉴는 버그처럼 보이지만, 원인은 코드보다 시안에 있다. 시안은 "메뉴는 한 줄"이라는 가정을 그림으로 굳혔고, 개발자는 그 그림의 높이를 숫자로 옮겼다. 글자 크기를 키운 사람에게는 그 가정이 맞지 않는다. 흐르는 레이아웃이 폭을 정하지 않는 것처럼, 높이도 될 수 있으면 정하지 않고 내용에 맞춰 늘어나게 두는 것이 웹의 기본이다. 상자의 크기를 어떻게 정하는지는 3장, 글자 크기를 사용자 설정에 맞춰 늘어나는 단위(rem)로 정하는 법은 6장에서 다룬다.
손가락, 커서, 키보드
화면의 크기만큼 다른 것이 화면을 다루는 손이다. 마우스 커서는 한 점을 정확히 가리키고, 누르기 전에 위에 올려 둘 수 있다(호버). 손가락은 커서보다 훨씬 뭉툭하고, 누르기 전에 올려 둘 수 없으며, 누르는 동안 자기 손가락이 목표를 가린다. 키보드만 쓰는 사람은 Tab 키로 링크와 버튼을 하나씩 옮겨 다니므로, 지금 어디에 있는지 보여 주는 표시(포커스 표시)가 없으면 길을 잃는다.
아래 시뮬레이터는 행사 일정 페이지에서 날짜를 고르는 칩 다섯 개를 확대해 보여 준다. 칩을 누르면 그 칩을 노리고 누른 손길 80번이 어디에 떨어지는지 점으로 찍힌다. 마우스와 손가락을 바꾸고, 칩 크기를 바꿔 본다.
커서는 점, 손가락은 얼룩
손가락의 흩어짐은 칩의 크기와 간격 둘 다로 줄일 수 있다. 칩이 크면 노린 칩 안에 떨어지는 점이 늘고, 칩 사이가 벌어지면 빗나간 점이 옆 칩 대신 빈 곳에 떨어진다. 빈 곳을 누르면 아무 일도 일어나지 않으니 다시 누르면 되지만, 옆 날짜를 누르면 엉뚱한 행사 페이지가 열린다. 웹 접근성 표준 WCAG 2.2는 누를 대상의 최소 크기를 하나의 성공 기준(2.5.8)으로 두었고, 휴대폰 플랫폼의 디자인 지침들은 그보다 큰 값을 권한다. 그 수치와 출처, 그리고 크기와 거리로 누르는 시간을 설명하는 피츠의 법칙은 7장에서 다룬다.
호버가 없는 기기라는 것도 기억해 둔다. 마우스를 올려야만 나타나는 설명이나 메뉴는 손가락으로는 볼 수 없다. 키보드로 쓰는 사람에게는 포커스가 지금 어디 있는지가 마우스 커서와 같은 구실을 한다. 상태를 어떻게 보여 줄지는 7장, 메뉴를 어떻게 펼치고 숨길지는 8장, 손가락으로 칸을 채우는 폼은 9장의 주제다.
모두에게, 빨리
웹 페이지는 내려받아야 보인다. 포스터는 붙이는 순간 다 보이지만, 웹 페이지는 글과 그림, 글꼴 파일이 통신망을 타고 도착하는 만큼만 보인다. 사진 한 장이 몇 메가바이트이면 빠른 와이파이에서는 눈치채지 못해도, 붐비는 지하철의 휴대폰 데이터에서는 몇 초씩 빈 화면을 보게 된다. 페이지의 무게는 개발자의 일처럼 보이지만, 무거운 사진과 글꼴을 고르는 것은 대개 디자이너다.
아래 시뮬레이터는 첫 화면을 띄우는 데 필요한 파일들이 도착하는 순서를 시간 막대로 그린다. 첫 화면 사진의 용량과 통신 환경을 바꾸고, 한글 웹폰트 전체 파일을 쓰는지 켜고 끈다.
첫 화면이 뜨기까지
페이지가 빨리 뜨는 것과 모두가 쓸 수 있는 것은 같은 질문의 두 얼굴이다. 느린 망을 쓰는 사람, 오래된 휴대폰을 쓰는 사람, 화면을 귀로 듣는 사람, 손이 떨리는 사람, 글자를 크게 키운 사람에게 페이지가 닿는가. 웹에는 이 질문을 점검하는 공개 기준이 있다. 웹 접근성은 W3C의 WCAG(Web Content Accessibility Guidelines) 2.2와 이를 바탕으로 한 한국형 웹 콘텐츠 접근성 지침(KWCAG 2.2)이 기준이 되고(11장), 속도는 구글의 web.dev가 제안한 핵심 웹 지표(Core Web Vitals)가 널리 쓰인다(12장). 이 책은 이런 기준의 수치를 출처와 함께 쓰고, 기준이 없는 것은 그렇다고 밝힌다.
통설과 근거
웹 디자인에도 규칙처럼 도는 말이 많다. 일부는 특정 시기의 기술이나 특정 사이트의 관찰에서 나와 조건을 잃은 채 퍼졌고, 일부는 근거가 확인된 표준이다. 이 책은 둘을 구별해 쓴다. 표준은 출처와 수치를 밝히고, 통설은 근거의 수준을 밝힌다.
| 흔히 듣는 말 | 근거의 수준(이 책의 판단) | 다루는 장 |
|---|---|---|
| 첫 화면(접힘선) 아래는 아무도 보지 않는다 | 통설. 사람들은 내용이 이어진다는 단서가 있으면 스크롤한다는 관찰이 많다. 다만 시선과 주의가 위쪽에 더 몰린다는 보고도 있다. "아무도"는 틀렸고 "위쪽이 더 많이 보인다"는 대체로 맞다. | 2장 |
| 무엇이든 세 번 클릭 안에 닿아야 한다 | 통설. 클릭 수 자체보다 단계마다 다음에 무엇을 누를지 분명한지가 중요하다는 관찰이 있다. 수치 규칙으로 쓰지 않는다. | 8장 |
| 햄버거 메뉴(≡)는 이제 누구나 안다 | 근거가 엇갈린다. 익숙한 사람이 늘었지만, 숨긴 메뉴는 펼쳐 둔 메뉴보다 덜 쓰인다는 사용성 관찰이 꾸준히 보고된다. 누가 쓰는 사이트인지로 판단한다. | 8장 |
| 누를 대상은 최소 24×24 CSS px | 표준. W3C WCAG 2.2 성공 기준 2.5.8 대상 크기(최소), AA 등급. 예외 조건이 있다. 플랫폼 지침의 더 큰 값은 출처와 함께 따로 다룬다. | 7장 |
| 글자는 200%까지 키워도 깨지지 않아야 한다 | 표준. WCAG 2.2 성공 기준 1.4.4 글자 크기 조정, AA 등급. | 2장, 11장 |
이 책의 지도
지금까지 만난 질문은 네 갈래로 모인다. 화면은 크기를 정할 수 없는 캔버스와 그 위의 상자다(뷰포트와 픽셀, 박스와 간격). 배치는 그 캔버스 위에 내용을 놓고 늘이는 규칙이다(레이아웃 그리드, 반응형, 색과 글자의 체계). 상호작용은 사람이 화면과 주고받는 방식이다(컴포넌트와 상태, 내비게이션, 폼, 모션). 쓰임은 그 결과가 모두에게, 빨리 닿는지다(접근성, 속도). 이 책의 네 부가 이 네 갈래다.
마지막 시뮬레이터는 이 지도를 한 페이지 위에 겹쳐 본다. 책방 E의 가상 페이지 하나를 놓고, 창 폭(오른쪽 손잡이), 글자 크기, 레이아웃 방식, 첫 화면 사진을 바꾼다. 아래 읽기 판의 네 칸이 네 갈래의 질문에 하나씩 답한다.
한 페이지, 네 가지 질문
네 칸은 서로 맞물려 있다. 창 폭을 줄이면 단 수가 바뀌고, 글자를 키우면 메뉴가 꺾이며, 메뉴가 꺾이면 첫 화면에 들어가는 내용이 준다. 첫 화면에 사진을 크게 넣으면 인상은 강해지지만 무게가 늘어난다. 그래서 웹 디자인에는 하나만 고쳐서 끝나는 일이 드물다. 이 책은 손잡이를 하나씩 따로 익힌 다음, 마지막 실험실(13장)에서 다시 한꺼번에 맞춘다. 어느 조합이 정답이라고 말하지 않는다. 동네 책방의 사이트와 은행의 사이트, 매일 쓰는 도구와 한 번 보는 행사 페이지에는 서로 다른 조합이 맞는다.
서윤의 웹 개편 노트
이건 그림이지 웹이 아니에요
책방 E의 색을 정하고(2026년 가을), 진열과 포스터를 짜고, 안내 책자의 드로잉을 그리고, 간판과 소식 글을 조판하고, 그림 읽기 모임을 꾸리고, 겨울 내내 사진을 찍은 윤서윤에게 2028년 1월 첫 주, 주인이 다시 부탁을 했다. "모임 신청을 전화로 받느라 하루가 다 가요." 책방의 웹사이트는 2019년쯤 산 템플릿 그대로였다. 페이지 폭이 960픽셀로 고정되어 있어서 휴대폰으로 열면 페이지가 통째로 줄어 글자가 깨알 같았다. 모임 신청은 아예 받을 수 없어 "전화 주세요"라는 문장만 있었다. 서윤은 사이트를 처음부터 다시 만들기로 했다. 목표는 3월 첫 주 공개다.
서윤은 주말 이틀 동안 노트북(창 폭 1440)에서 디자인 도구를 열고 첫 화면을 공들여 그렸다. 왼쪽에 다음 모임의 제목과 날짜, 오른쪽에 겨울에 찍은 쇼윈도 사진, 아래에 행사 일정과 신간 표지 네 권. 회사 동료인 프런트엔드 개발자 오지후가 퇴근 뒤 코드를 맡아 주기로 했다. 지후는 서윤이 보낸 시안 그림을 자기 휴대폰(창 폭 360)에서 열었다. 그림은 화면 폭에 맞춰 4분의 1로 줄었고, 서윤이 17px로 정한 본문은 4px 남짓이 되었다. 회사의 넓은 모니터(창 폭 1920)에서는 그림이 가운데에 떠서 양옆이 비었다. 지후가 말했다. "이건 그림이지 웹이 아니에요. 화면 크기는 우리가 정할 수 없어요."
지후는 그 자리에서 시안의 첫 화면만 대충 코드로 옮겨, 서윤의 멘토인 화가 한도경에게 링크를 보냈다. 도경은 휴대폰의 글자 크기를 가장 크게 해 두고 쓴다. 답장으로 온 화면 캡처에서는 메뉴 다섯 개가 두 줄로 꺾여, 둘째 줄의 "소개"와 "오시는 길"이 "1월 그림책 낭독 모임" 제목 위에 겹쳐 있었다. 지후가 시안에서 잰 헤더 높이를 그대로 못 박았기 때문이다. 도경은 "글자가 큰 건 좋은데 메뉴가 제목을 가렸다"고 적었다. 서윤은 이 장의 시뮬레이터로 같은 일을 다시 해 보고, 그림 한 장을 완성하는 방식으로는 이 문제를 미리 볼 수 없다는 것을 받아들였다.
서윤의 선택은 시안을 다시 그리기 전에 두 가지를 먼저 정하는 것이었다. 하나는 새 사이트에 들어갈 페이지 목록이다. 주인과 이야기해 꼭 필요한 다섯 페이지만 남겼다. 다른 하나는 시안을 그리는 방식이다. 한 폭의 완성 그림 대신, 처음부터 세 폭에 같은 내용을 나란히 그리고, 그 사이의 폭에서 일어날 일은 문장으로 적기로 했다. 지후는 세 폭이 "기기 이름"이 아니라 폭의 견본일 뿐이라는 조건을 달았다.
#2f7d5b, 크림 #ffe2d7, 차분한 초록 #567666, 강조 #d24f39, 짙은 색 #22342a)과 TypeBook에서 정한 본문 글자(Pretendard 계열 고딕, 본문 17px 안팎)를 이어 쓴다.핵심 정리
- 웹 페이지는 크기를 정할 수 없는 캔버스 위에 놓인다. 페이지가 그려지는 창 안의 영역(뷰포트)은 기기, 창 크기, 방향, 확대에 따라 사람마다 다르다.
- 웹 디자이너가 만드는 것은 한 장의 완성 그림이 아니라 폭이 바뀔 때 배치가 어떻게 바뀔지에 대한 규칙이다. 한 폭에서 완성한 그림은 다른 폭에서 줄어들어 읽을 수 없거나 비어 보인다.
- 고정폭 레이아웃은 좁은 창에서 줄어들거나 잘리고 넓은 창에서 빈다. 흐르는 레이아웃은 창을 채우며 다시 흐르고, 최대 폭을 두어 넓은 창의 긴 글줄을 막는다.
- 화면을 정하는 것은 사람이다. 글자 크기 설정, 확대, 어두운 화면, 움직임 줄이기, 키보드와 화면 낭독기. 높이와 폭을 못 박지 않고 내용에 맞춰 늘어나게 두면 이 설정들을 견딘다.
- 손가락은 커서보다 뭉툭하고 호버가 없다. 누를 대상의 크기와 간격이 잘못 누르는 비율을 바꾼다.
- 페이지의 무게는 첫 화면이 뜨는 시간을 정하고, 무거운 사진과 글꼴은 대개 디자이너가 고른다. 접근성과 속도에는 공개 기준(WCAG 2.2, KWCAG 2.2, 핵심 웹 지표)이 있고, "접힘선 아래는 아무도 안 본다" 같은 통설은 근거의 수준을 밝혀 다룬다.
확인 퀴즈
1. 창 폭 1440의 노트북에서 한 장의 그림으로 완성한 시안을 창 폭 360의 휴대폰에서 화면 폭에 맞춰 줄여 보면 무슨 일이 생기는가?
2. 도경의 휴대폰(글자 크기 최대)에서 메뉴의 둘째 줄이 "다음 모임" 제목 위에 겹쳐 보였다. 가장 알맞은 원인과 고칠 방향은?
3. 페이지 폭이 960픽셀로 고정된 옛 사이트를 창 폭 1600의 넓은 모니터와 창 폭 360의 휴대폰에서 연다. 옳은 설명은?
4. "첫 화면(접힘선) 아래는 아무도 보지 않는다"는 말에 대해 이 책이 취하는 태도는?
출처
- John Allsopp, "A Dao of Web Design", A List Apart, 2000. — 내용을 요약했다.
- Ethan Marcotte, "Responsive Web Design", A List Apart, 2010. — 흐르는 그리드, 유연한 이미지, 미디어 쿼리의 묶음으로서의 반응형 웹 디자인.
- W3C, Web Content Accessibility Guidelines (WCAG) 2.2, 2023. 성공 기준 1.4.4 글자 크기 조정(AA), 2.5.8 대상 크기(최소)(AA).
- 한국형 웹 콘텐츠 접근성 지침(KWCAG) 2.2. — 자세한 출처와 내용은 11장에서 다룬다.
- web.dev(Google), Core Web Vitals. — 기준값은 12장에서 출처와 함께 다룬다.
- 시뮬레이터의 책방 E 페이지, 방문 환경, 손가락 흩어짐, 통신 속도는 모두 가상의 예시이거나 교육용 대표값이다.