CSS란 무엇인가


잘 만들어진 웹사이트를 하나 열어서 CSS를 걷어내면, 흰 배경에 검은색 텍스트만 세로로 쭉 늘어선 모습이 남습니다. 모든 제목, 모든 문단, 모든 링크가 순서대로 쌓여 있을 뿐 아무런 꾸밈도 없는 상태죠. 그 꾸밈없는 텍스트 뭉치가 바로 HTML입니다. 페이지를 디자인된 것처럼 보이게 만드는 모든 것, 즉 색상, 여백, 폰트, 칼럼과 카드, 내비게이션 바 같은 것들은 모두 CSS의 몫입니다. 이번 장에서는 이 두 번째 언어가 무엇이고, 첫 번째 언어와 어떻게 함께 작동하는지 다룹니다.
CSS 적용 전후의 페이지
CSS는 **Cascading Style Sheets**의 줄임말입니다. 여기서 기억해야 할 핵심은 style, 즉 "스타일"입니다. CSS는 페이지의 겉모습을 표현하는 방법입니다. HTML이 "이건 제목이다, 이건 문단이다, 이건 버튼이다"라고 말한다면, CSS는 "제목을 크고 진한 파란색으로 만들어라, 버튼에는 패딩을 주고 모서리를 둥글게 해라"라고 말합니다.
HTML을 방 안의 내용물, 즉 가구와 그 배치라고 생각하고, CSS를 페인트와 조명, 인테리어 배치라고 생각해보세요. 같은 방이지만 하나는 텅 비어 있고 다른 하나는 있고 싶은 공간이 됩니다. CSS는 HTML의 특정 부분을 가리키며 그 외관을 바꾸는 별도의 규칙들로 작성합니다.
h1 {
color: navy;
font-size: 2rem;
}이것이 하나의 CSS 규칙입니다. 페이지 안의 모든 <h1> 제목을 찾아서 네이비색으로, 더 크게 만듭니다. HTML은 그대로 남아 있고, 외관만 바뀝니다.
CSS가 HTML을 가리키는 방법
CSS는 페이지의 올바른 부분을 찾아낼 수 있어야 비로소 유용해집니다. 이때 사용하는 것이 **선택자(selector)**입니다. 규칙 맨 앞에 오는 부분으로, 무엇을 꾸밀지 지정합니다. 위 규칙에서 h1이 선택자이고, "모든 h1 제목"을 의미합니다.
보통은 HTML 요소에 class를 붙이고, CSS에서 그 클래스를 가리켜서 요소를 지정합니다. 클래스는 여러분이 직접 정하는 이름입니다.
<button class="buy-button">지금 구매</button>.buy-button {
background-color: teal;
color: white;
}.buy-button 선택자는 그 클래스를 가진 요소를 찾아서 스타일을 적용합니다. 앞으로 다양한 종류의 선택자를 만나게 되겠지만, 가장 많이 사용하게 될 것은 클래스입니다.
class="이름"을 붙이고, CSS에서 .이름을 스타일링하면 됩니다. 다른 종류들은 아직 걱정하지 마세요, 클래스만으로도 오랫동안 충분합니다. "cascading"이 의미하는 것
Cascading Style Sheets에서 첫 단어는 사람들이 흔히 지나치는 부분이지만, 사실 많은 것을 설명해줍니다. 같은 요소에 여러 규칙이 적용될 수 있고, 그 규칙들이 서로 충돌할 수 있습니다. 어떤 규칙은 문단을 회색으로 만들고, 다른 규칙은 이 특정 문단을 검은색으로 만들라고 할 수도 있습니다. **캐스케이드(cascade)**란 브라우저가 어느 규칙이 이길지 결정할 때 사용하는 일련의 규칙입니다.
대부분의 경우 이것 하나로 정리됩니다. 두 규칙의 특정도가 같다면, 나중에 작성된 규칙이 이깁니다. 아직 전체 그림을 다 알 필요는 없습니다. 스타일이 예상한 대로 나오지 않을 때는 보통 CSS가 고장 난 것이 아니라 다른 규칙이 이겼기 때문이라는 것만 기억하면 됩니다.
여기서부터 CSS는 어디로 향하는가
CSS는 핵심만 보면 작은 언어입니다. 선택자 하나와 몇 개의 속성-값 쌍이 전부죠. 하지만 그 범위는 아주 넓게 뻗어 있습니다. 요소를 지정하고 속성을 설정할 수 있게 되면, 이 핸드북의 나머지는 알아둘 만한 속성들과 그 위에 세워진 체계들을 다룹니다. 여백과 크기를 다루는 박스 모델, 그다음 색상과 타이포그래피, 그리고 페이지 전체를 배치하는 레이아웃 도구인 flexbox와 grid까지 이어집니다.
다음 장인 CSS의 동작 방식에서는 이번 장에서 소개한 메커니즘을 구체적으로 다룹니다. CSS를 페이지에 연결하는 세 가지 방법, 규칙의 정확한 구조, 그리고 캐스케이드와 상속이 모든 요소의 최종 모습을 어떻게 결정하는지를 살펴봅니다.

