본문으로 건너뛰기

브라우저 기본 스타일과 Styles 창

HTML·CSS 목차CSS 첫걸음레슨 23 / 93

목차

브라우저 기본 스타일은 브라우저가 모든 페이지에 먼저 입히는 CSS입니다. CSS를 한 줄도 쓰지 않은 페이지에도 제목이 크고 목록 앞에 점이 있는 까닭입니다. 우리 CSS는 그 위에 덧칠합니다 — 우리가 적은 속성만 바뀌고, 나머지는 기본 스타일 그대로 남습니다.

그래서 CSS가 생각대로 안 먹을 때는 우리 규칙만 볼 것이 아니라, 남아 있는 기본 스타일과 버려진 선언을 함께 봐야 합니다. 그 셋을 한 화면에 보여 주는 곳이 개발자 도구 Styles 창입니다. 이 레슨 끝에서 CSS가 안 먹을 때 찾는 차례를 정리합니다.

8단계 중 1단계. CSS를 쓰지 않아도 목록 앞에 점이 있습니다. 브라우저가 처음부터 가진 기본 스타일입니다.

1기본 스타일 — 처음부터 있던 모양

아래 조각에는 CSS가 한 줄도 없습니다.

<h1>김치볶음밥</h1>
<h2>재료</h2>
<ul>
  <li>밥 2공기</li>
  <li>잘 익은 김치 1컵</li>
</ul>
<a href="index.html">목록으로</a>
결과 화면
잰 값개발자 도구에서 본 값
  • h1의 font-size32px
  • h1의 font-weight700
  • h2의 font-size24px
  • ul의 list-style-typedisc
  • ul의 padding-left40px
  • a의 text-decoration-lineunderline
  • body의 margin-top8px

이 모양은 모두 크롬의 기본 스타일이 만든 것입니다.

보이는 모양만드는 기본 스타일(크롬)
h1이 크고 굵다font-size: 2em(32px) · font-weight: bold
h2도 크고 굵다font-size: 1.5em(24px) · font-weight: bold
목록 앞에 점이 있고 안으로 들어가 있다list-style-type: disc · 왼쪽 안쪽 여백 padding-inline-start: 40px
링크가 파랗고 밑줄이 있다파란 글자색 · text-decoration: underline
페이지 가장자리에 틈이 있다body의 바깥 여백 margin: 8px

em 단위는 11단원, 안쪽 여백과 바깥 여백은 박스 모델 단원에서 배웁니다. 괄호 안의 크기는 브라우저 글자 크기 설정이 처음 그대로일 때 값이고, 글자 크기를 키웠다면 그만큼 큽니다. 가로로 쓰는 페이지에서 padding-inline-start는 왼쪽 안쪽 여백이라, 잰 값 칸에는 padding-left로 보입니다. 기본 스타일은 브라우저마다 조금씩 다릅니다 — 이 표는 크롬 기준입니다.

2우리 규칙은 기본 스타일을 이긴다

같은 요소의 같은 속성에 기본 스타일과 우리 규칙이 함께 닿으면 우리 규칙이 이깁니다.

브라우저 규칙 5. 한 요소의 한 속성에 선언이 여럿 닿으면 하나만 이깁니다. 기본 스타일보다 우리 CSS가 이깁니다.

우리 규칙끼리 겨룰 때와 닿는 선언이 없을 때는 9단원 '규칙이 겹칠 때'에서 이 규칙에 이어 붙입니다.

이기는 것은 속성 하나씩입니다. 기본 스타일의 규칙이 통째로 지는 것이 아니라, 우리가 적은 속성만 덮고 나머지는 남습니다. 이것을 덧칠이라고 부릅니다.

<ul>
  <li>밥 2공기</li>
  <li>잘 익은 김치 1컵</li>
</ul>
<a href="index.html">목록으로</a>
ul {
  list-style-type: none;
}

a {
  color: #005bb5;
}
결과 화면
잰 값개발자 도구에서 본 값
  • ul의 list-style-typenone
  • ul의 padding-left40px
  • a의 글자색rgb(0, 91, 181)
  • a의 text-decoration-lineunderline
  • 목록은 점만 사라지고 안쪽 여백 40px은 남아 여전히 안으로 들어가 있습니다. 들여 쓴 틈은 점이 아니라 기본 스타일의 안쪽 여백이 만든 것이고, 우리는 그 속성을 적지 않았습니다.
  • 링크는 글자색만 진한 파랑이 되고 밑줄은 그대로입니다.

list-style-type은 목록 앞 표시를 정하는 속성입니다. 줄여서 list-style: none으로 쓰는 코드도 많이 만나는데, 한 줄로 속성 여럿을 정하는 짧게 적기라 여백 짧게 적기에서 다룹니다.

3Styles 창 읽기

개발자 도구 Styles 창은 고른 요소에 닿은 규칙을 모두 보여 줍니다. 바꿔 볼 요소 위에서 마우스 오른쪽 단추 → 검사를 누르면 Elements 패널(한국어 화면에서는 '요소')에서 그 요소의 줄이 짚이고, 같은 패널의 Styles 창(한국어 화면에서는 '스타일')에 그 요소에 닿은 규칙이 나옵니다.

Styles 창에 보이는 것뜻
규칙 옆의 style.css:2 같은 글자우리 CSS — 그 규칙이 있는 파일과 줄 번호
user agent stylesheet⁠라고 적힌 규칙기본 스타일. 맨 아래에 놓인다
취소선만 그은 선언다른 선언에 져서 쓰이지 않는 선언
취소선과 경고 표시가 함께 붙은 선언알아듣지 못해 버린 선언

규칙은 위가 이긴 쪽, 맨 아래가 기본 스타일인 차례로 놓입니다. 위 점수판과 같은 차례입니다. 알아들었지만 지금은 효과가 없는 선언은 흐린 글자로 보이는데, 그 까닭은 뒤 단원에서 만납니다(크롬 기준 — Chrome DevTools 문서).

Styles 창에서는 값을 바로 바꿔 볼 수 있습니다.

하고 싶은 것하는 법
값 바꾸기값을 누르고 새 값을 친 뒤 Enter
숫자를 조금씩 바꾸기값을 누른 뒤 위 · 아래 방향키
선언 하나 끄고 켜기선언에 마우스를 올리면 보이는 앞의 체크박스

바꾼 값은 화면에 바로 그려지지만, 바뀐 것은 브라우저 안의 사본이지 style.css 파일이 아닙니다. 새로고침하면 브라우저가 파일을 다시 읽어 파일에 적힌 값으로 돌아옵니다. 그래서 순환은 늘 같습니다 — Styles 창에서 바꿔 보기 → style.css에 옮겨 적기 → 저장 → 새로고침.

4안 먹을 때 찾는 차례

CSS가 생각대로 안 먹을 때는 브라우저가 일하는 차례대로 봅니다. 파일을 받고, 나무를 짓고, 규칙을 요소에 대고, 값을 정하는 차례입니다. 앞에서 괜찮다고 본 것은 다시 보지 않아도 됩니다.

차례물음보는 곳브라우저 규칙
1파일이 닿았나 — 저장했나 · 새로고침했나 · link · src 주소가 맞나편집기 탭의 ● · 새로고침 · 폴더 나무1
2요소가 나무에 내 생각대로 있나Elements 패널 · 검사기 Error2
3그 요소에 규칙이 닿았나 — Styles 창에 그 규칙이 보이나, 안 보이면 선택자요소 고르기 · Styles 창4
4닿았으면 알아들었나 · 이겼나Styles 창의 경고 표시 · 취소선4 · 5

다섯째 차례(상자와 배치)는 박스 모델 단원에서 더합니다. 이 단원 끝 레시피 한 페이지 만들기의 마지막 하위 목표가 이 차례로 페이지를 확인합니다.

예제

찾는 차례로 찾기 — 재료 제목만 색이 안 바뀐다

제목 둘을 진한 파랑으로 칠하려 했는데 '재료' 제목만 검정입니다.

<h1>김치볶음밥</h1>
<h2>재료</h2>
h1 {
  color: #005bb5;
}

h2 {
  color: 005bb5;
}
결과 화면
잰 값개발자 도구에서 본 값
  • h1의 글자색rgb(0, 91, 181)
  • h2의 글자색rgb(0, 0, 0)

찾는 차례대로 봅니다.

  1. 파일이 닿았나: 같은 style.css의 h1 규칙이 먹었으니 파일은 닿았습니다. 지나갑니다.
  2. 요소가 나무에 있나: Elements 패널에 h2 줄이 있습니다. 지나갑니다.
  3. 규칙이 닿았나: h2를 고르면 Styles 창에 h2 규칙이 보입니다. 닿았습니다.
  4. 알아들었나 · 이겼나: color: 005bb5 줄에 취소선과 경고 표시가 함께 붙어 있습니다. 알아듣지 못해 버린 선언입니다. 값 앞의 # 기호가 빠졌습니다.

4번에서 찾았습니다. #005bb5로 고치면 '재료' 제목도 진한 파랑이 됩니다.

자주 틀리는 곳

틀린 생각: Styles 창에서 고친 값은 파일에도 남는다.

Styles 창에서 바꾼 값은 화면에 바로 보여서 저장된 것처럼 보입니다. 바뀐 것은 브라우저가 파일을 읽어 만든 사본입니다. 새로고침하면 브라우저가 style.css를 다시 읽어 파일에 적힌 값으로 돌아오고, 창을 닫으면 고친 값은 남지 않습니다.

맞는 규칙: 마음에 든 값은 style.css에 옮겨 적고 저장한 뒤 새로고침해 확인합니다.

틀린 생각: Styles 창의 취소선은 모두 버린 선언이다.

<h1>김치볶음밥</h1>
<h2>재료</h2>
h1 {
  font-size: 24px;
}

h2 {
  font-size: 20;
}
결과 화면
잰 값개발자 도구에서 본 값
  • h1의 font-size24px
  • h2의 font-size24px

h1을 고르면 기본 스타일의 font-size: 2em에 취소선만 그어져 있습니다. 우리 24px에 진 선언이라 고칠 곳이 아닙니다. h2를 고르면 우리 font-size: 20에 취소선과 경고 표시가 함께 붙어 있습니다. 단위가 없어 버린 선언이라, 이번에는 기본 스타일의 24px이 남았습니다(크롬 기준).

맞는 규칙: 취소선만 그은 선언은 진 선언, 경고 표시까지 붙은 선언은 버린 선언입니다. 고칠 곳은 버린 쪽입니다.

틀린 생각: 기본 스타일을 지우려면 !important를 붙여야 한다.

2절 예제의 ul 규칙은 !important 없이도 기본 스타일의 점을 지웠습니다. 우리 규칙은 이미 기본 스타일을 이깁니다(브라우저 규칙 5). !important는 우리 규칙끼리의 이기는 차례를 흐려 나중에 고치기 어렵게 만듭니다. 언제 쓰는지는 9단원 !important 대신에서 봅니다.

맞는 규칙: 기본 스타일을 바꾸려면 그 속성을 우리 규칙에 적기만 하면 됩니다.

확인 문제

1. 아래 코드의 h1 규칙에 font-size: 16px;을 더하면 제목의 크기와 굵기는 어떻게 될까요?

<h1>김치볶음밥</h1>
<p>한식 · 조리 15분 · 2인분</p>
h1 {
  color: #005bb5;
}
결과 화면
  • ① 크기는 16px, 굵기도 보통 — 문단과 똑같아진다
  • ② 크기는 16px, 굵기는 굵게 그대로
  • ③ 크기는 32px 그대로
힌트

우리 규칙이 적은 속성은 몇 개인지, 기본 스타일이 h1에 주는 속성은 무엇무엇인지 보세요.

정답

② — 크기는 문단과 같은 16px이 되지만, 굵기는 기본 스타일의 굵게 그대로입니다.

<h1>김치볶음밥</h1>
<p>한식 · 조리 15분 · 2인분</p>
h1 {
  color: #005bb5;
  font-size: 16px;
}
결과 화면
잰 값개발자 도구에서 본 값
  • h1의 font-size16px
  • h1의 font-weight700
  • p의 font-size16px
  • 우리 선언 font-size: 16px이 기본 스타일의 2em을 이깁니다(브라우저 규칙 5). 굵기는 우리가 적지 않아 기본 스타일의 bold 그대로입니다.
  • 크기가 문단과 같아져도 나무에서는 여전히 h1이라 제목 차례에 듭니다. 모양을 바꾸는 CSS는 뜻을 바꾸지 않습니다(브라우저 규칙 3).
  • ①은 우리 규칙이 기본 스타일 규칙을 통째로 갈아 끼운다고 본 것입니다. 이기는 것은 적은 속성 하나씩입니다.
  • ③은 기본 스타일이 우리 CSS를 이긴다고 본 것입니다. 같은 속성이면 우리 CSS가 이깁니다.

h1 규칙에 font-size: 16px;을 넣어 보세요. 제목을 보세요.

2. CSS가 생각대로 안 먹을 때 찾는 차례입니다.

(가) 넷의 차례가 섞였습니다. 먼저 볼 것부터 기호를 늘어놓으세요.

  • ㉠ 그 요소에 규칙이 닿았나
  • ㉡ 파일이 닿았나
  • ㉢ 알아들었나 · 이겼나
  • ㉣ 요소가 나무에 내 생각대로 있나

(나) '파일이 닿았나'가 맨 앞인 까닭을 고르세요.

  • ① 브라우저는 파일을 받은 뒤에 나무를 짓고 값을 정하기 때문
  • ② 파일 문제가 가장 흔하기 때문
  • ③ 파일이 없으면 개발자 도구가 열리지 않기 때문
힌트

브라우저가 페이지를 그릴 때 무엇부터 하는지, 처음부터 차례로 떠올려 보세요.

힌트 둘

브라우저가 페이지를 그릴 때 하는 일의 차례 — 받기, 나무 짓기, 규칙 대기, 값 정하기 — 를 떠올려 보세요.

정답

(가) ㉡ ㉣ ㉠ ㉢ — 파일이 닿았나 · 요소가 나무에 있나 · 규칙이 닿았나 · 알아들었나 · 이겼나입니다.

(나) ①입니다. 찾는 차례는 브라우저가 일하는 차례입니다. 파일을 받지 못했으면 그 뒤의 일은 볼 것이 없습니다.

  • ②는 흔하기 때문이라고 본 것입니다. 차례는 흔한 정도가 아니라 브라우저가 일하는 차례로 정했습니다.
  • ③은 파일이 없으면 도구가 멈춘다고 본 것입니다. 파일을 못 받아도 개발자 도구는 열립니다.

3. 플로우 카페 메뉴판입니다. 가격 줄(li)을 빨갛게 하려 했는데 그대로입니다. 개발자 도구에서 li를 고르니 Styles 창에 빨강 규칙이 보이지 않습니다. CSS 몇 번 줄을 어떻게 고쳐야 할까요? 고친 줄을 쓰세요.

<h2>플로우 카페</h2>
<ul>
  <li>커피 4000</li>
  <li>라테 4500</li>
</ul>
h2 {
  color: #005bb5;
}

ll {
  color: #d70015;
}
결과 화면
힌트

'Styles 창에 빨강 규칙이 보이지 않는다'가 찾는 차례 몇 번에 걸리는지부터 정하세요.

힌트 둘

찾는 차례 3번 — 규칙이 닿지 않았으면 그 규칙의 선택자를 한 글자씩 보세요.

정답

5번 줄을 li {로 고칩니다.

<h2>플로우 카페</h2>
<ul>
  <li>커피 4000</li>
  <li>라테 4500</li>
</ul>
h2 {
  color: #005bb5;
}

li {
  color: #d70015;
}
결과 화면
잰 값개발자 도구에서 본 값
  • li의 글자색rgb(215, 0, 21)

찾는 차례 3번에서 찾습니다.

  • 1번 — 제목이 파라니 CSS는 닿았습니다.
  • 2번 — li는 나무에 있습니다.
  • 3번 — li를 골라도 규칙이 보이지 않으니 선택자를 봅니다. ll은 엘(l) 둘이라 li 요소를 고르지 않습니다.

ll은 알아듣는 선택자라 경고 표시도 없습니다. 이름이 ll인 요소가 없어 어디에도 닿지 않을 뿐입니다.

  • 흔한 오답은 color: #d70015 !important;⁠처럼 값에 힘을 주는 것입니다. 닿지 않은 규칙은 겨루기에 들지 못해 그대로입니다.

컴퓨터에서 해 보기(선택) — 점수에 들지 않습니다. 폰으로만 보고 있다면 건너뛰세요. 2절 예제를 index.html과 style.css로 저장하고 link로 이어 엽니다(문서 뼈대의 body 안에 예제 HTML을 넣습니다). 개발자 도구에서 ul을 고르고, Styles 창 아래쪽 user agent stylesheet 규칙에서 list-style-type: disc⁠에는 취소선이 있고 padding-inline-start: 40px⁠에는 없는 것을 찾습니다. 그다음 위쪽 우리 ul 규칙의 none을 square로 바꾸면 목록이 어떻게 될지 먼저 적고 바꿔 봅니다. 새로고침하면 다시 none으로 돌아오는 것도 확인합니다.

끝까지 내려오면 저절로 표시됩니다. 이 기기에만 저장합니다.

HTML·CSS 목차로