AD JB Toolbox 01

CSS 강좌 / 문법: 선택자·선언·주석과 오류 처리

CSS의 기본 규칙은 선택자 { 속성: 값; } 형태입니다. 선택자는 꾸밀 요소를 고르고, 중괄호 안의 선언은 그 요소에 적용할 모양을 정합니다. 콜론은 속성과 값을, 세미콜론은 선언과 선언을 구분하므로 줄바꿈만으로 두 선언을 나눌 수는 없습니다.

규칙 한 개를 구성하는 부분

.notice {
  color: #087f5b;
  padding: 16px;
}
부분 예시 뜻
선택자 .notice notice 클래스가 있는 요소를 고릅니다.
선언 블록 { ... } 이 선택자에 적용할 선언들을 묶습니다.
속성 color, padding 글자색, 안쪽 여백처럼 바꿀 특성입니다.
값 #087f5b, 16px 해당 특성에 지정할 내용입니다.
선언 padding: 16px; 속성 이름과 값을 콜론으로 연결한 한 항목입니다.

속성마다 허용하는 값이 다릅니다. color에는 색상값을, padding에는 길이값 등을 넣습니다. padding: blue;는 단어의 철자가 맞더라도 여백 값으로 사용할 수 없습니다. 16px는 숫자와 단위를 붙여 씁니다. 16 px처럼 띄어 쓰면 하나의 길이값으로 읽히지 않습니다.

중괄호·콜론·세미콜론과 줄바꿈

줄바꿈과 들여쓰기는 사람이 코드를 읽기 쉽게 만드는 역할을 합니다. 다음 두 규칙은 같은 선택자와 같은 선언을 갖고 있으므로 동일하게 적용됩니다. 처음 배울 때는 선언을 한 줄씩 나누면 빠진 기호를 찾기 쉽습니다. 꾸밀 대상에 따라 선택자를 고르는 방법은 요소·클래스·ID·속성 선택자에서 비교합니다.

.notice { color: #087f5b; padding: 16px; }

.notice {
  color: #087f5b;
  padding: 16px;
}

마지막 선언의 세미콜론은 문법상 생략할 수 있지만, 나중에 선언을 추가할 때 실수하기 쉬우므로 항상 적는 습관이 좋습니다. 선택자 안의 공백은 별도의 의미를 가질 수 있습니다. .notice.urgent는 두 클래스가 함께 있는 요소를, .notice .urgent는 notice 안의 urgent 요소를 고릅니다. 이 공백까지 제거해도 같은 코드라고 생각하면 안 됩니다. 기본 선언 구조는 MDN의 CSS 문법 설명에 정리되어 있습니다.

여러 선택자 묶기와 주석 쓰기

h1, h2 {
  color: #087f5b;
}

/* 안내문에만 배경과 테두리를 적용합니다. */
.notice {
  background-color: #e9f7ef;
  border: 1px solid #087f5b;
}

쉼표는 여러 선택자를 같은 선언 블록에 연결합니다. h1, h2는 h1과 h2를 각각 선택하며, h1 h2는 h1 안에 있는 h2를 찾는 다른 선택자입니다. 같은 색을 적용하려는 목적에는 쉼표가 맞습니다.

CSS 주석은 /*로 시작해 */로 끝납니다. 주석 안의 문장은 스타일로 실행되지 않습니다. 설명을 쓰거나 잠깐 규칙을 제외할 때 쓸 수 있지만, 닫는 기호를 빠뜨리면 뒤의 코드까지 주석으로 처리될 수 있습니다. 일반 CSS에서는 JavaScript의 //를 한 줄 주석 표기로 사용하지 않습니다.

잘못된 선언과 잘못된 선택자는 영향이 다릅니다

브라우저는 CSS의 오류를 만나면 유효하지 않은 부분을 무시하고 가능한 규칙을 계속 처리합니다. 그렇다고 항상 “틀린 한 줄만 무시한다”는 뜻은 아닙니다. 빠진 구분 기호나 선택자 오류가 있으면 영향 범위가 커질 수 있습니다.

.notice {
  color: blue;
  padding: blue;
  background-color: #e9f7ef;
}

여기서는 padding: blue만 유효하지 않습니다. 다른 규칙이 없다면 글자색과 배경색은 적용되고, 안쪽 여백은 이 선언으로 바뀌지 않습니다. 속성을 colro처럼 잘못 쓰는 경우에도 그 선언은 인식되지 않습니다.

.notice {
  color: blue
  background-color: #e9f7ef;
  padding: 16px;
}

반면 이 예제에서는 첫 선언 뒤의 세미콜론이 없습니다. 브라우저는 다음 세미콜론까지를 color의 값으로 읽으려 하므로 blue background-color: #e9f7ef가 유효하지 않은 색상값이 됩니다. 따라서 이 블록의 색과 배경 선언이 모두 적용되지 않고, 뒤의 padding: 16px는 적용됩니다. 해결 방법은 blue 뒤에 세미콜론을 넣는 것입니다.

h1, .notice:made-up-state {
  color: blue;
}

이처럼 일반적인 쉼표 선택자 목록에 알 수 없는 가상 클래스가 들어가면 목록 전체가 유효하지 않아 h1에도 해당 규칙이 적용되지 않습니다. 일부 특수 선택자 목록에는 다른 처리 규칙이 있으므로 이 예제를 모든 CSS 구문에 확대해서 적용하지는 마세요. 오류 처리 범위는 MDN의 CSS 오류 처리 설명을 참고할 수 있습니다.

전체 예제와 결과 확인

<!doctype html>
<html lang="ko">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>작은 정원</title>
  <style>
body { margin: 24px; font-family: sans-serif; line-height: 1.7; }
    h1, h2 { color: #087f5b; }
    .notice {
      color: #087f5b;
      background-color: #e9f7ef;
      padding: 16px;
      border: 1px solid #087f5b;
    }
    /* 운영 시간을 설명하는 문장 */
    .description { font-size: 18px; }
  </style>
</head>
<body>
<h1>작은 정원</h1>
  <p class="notice">매일 오전 9시에 문을 엽니다.</p>
  <h2>방문 안내</h2>
  <p class="description">물병과 편한 신발을 준비하세요.</p>
</body>
</html>

전체 코드를 index.html로 저장해 열면 h1과 h2가 같은 초록색이고, 안내문에는 연한 배경·16px 안쪽 여백·1px 테두리가 보입니다. 설명 문장은 18px로 표시됩니다. font-size는 글자 크기, line-height는 줄 높이, border는 테두리를 정하는 속성입니다. 여기서는 문법과 결과를 연결하기 위한 보조 속성으로 사용했습니다.

틀린 코드를 고치는 실습

전체 예제의 .notice 블록을 아래 코드로 바꾸어 보세요. 문법 오류 두 개를 고쳐서 “파란 글자, 연한 초록 배경, 16px 여백”이 되도록 만드는 것이 목표입니다. 바꾸기 전에는 원래 파일을 다른 이름으로 복사해 두면 쉽게 되돌릴 수 있습니다.

.notice {
  colro: blue;
  background-color #e9f7ef;
  padding: 16px;
}

수정 답안: colro를 color로 고치고, background-color 뒤에 콜론을 넣습니다. 저장 후 새로고침하면 안내문 글자와 배경이 목표대로 바뀝니다. 수정 전에도 padding 선언은 유효하므로 여백이 남아 있을 수 있습니다. 일부 모양이 보인다고 전체 코드가 올바른 것은 아닙니다.

.notice {
  color: blue;
  background-color: #e9f7ef;
  padding: 16px;
}

수정했는데도 바뀌지 않으면 열어 둔 파일이 맞는지 먼저 확인하고, 개발자 도구에서 선택된 요소의 Styles와 Computed 확인하기로 실제 적용값을 살펴보세요. 문법 오류, 대상 선택 오류, 다른 규칙과의 충돌을 구분하면 무작정 값을 바꾸는 일을 줄일 수 있습니다.

같은 카테고리의 다른 글
CSS 강좌 / 미디어 쿼리와 콘텐츠 기준 분기점 만들기

CSS 강좌 / 미디어 쿼리와 콘텐츠 기준 분기점 만들기

카드의 최소 폭과 여백을 기준으로 미디어 쿼리 분기점을 정합니다. 1·2·3열 전체 예제와 경계값 비교로 조건이 적용되는 과정을 확인합니다.

CSS 강좌 / 큰 스타일시트 정리하기: 파일 구성·중첩·레이어

CSS 강좌 / 큰 스타일시트 정리하기: 파일 구성·중첩·레이어

역할별 CSS 파일 연결과 네이티브 중첩, 캐스케이드 레이어를 실행 가능한 작은 프로젝트로 익힙니다. 선택자 충돌을 비교하고 원래 설정으로 복원하는 실습을 제공합니다.

CSS 강좌 / 관계 선택자와 가상 클래스로 요소 고르기

CSS 강좌 / 관계 선택자와 가상 클래스로 요소 고르기

자손·자식·인접 형제·일반 형제 선택자를 같은 문서 구조에서 비교합니다. hover·focus-visible·first-child·nth-child를 포함한 전체 예제와 구조를 바꿔 선택 결과를 확인하는 실습을 제공합니다.

CSS 강좌 / 브라우저 개발자 도구로 CSS 확인하고 수정하기

CSS 강좌 / 브라우저 개발자 도구로 CSS 확인하고 수정하기

브라우저 개발자 도구에서 안내 문단을 선택하고, Styles의 선언과 Computed의 최종 값을 확인합니다. 색상 변경·선언 끄기·원본 저장 실습과 적용되지 않는 CSS의 원인별 점검 방법을 제공합니다.

CSS 강좌 / CSS란 무엇이고 HTML과 어떻게 다를까?

CSS 강좌 / CSS란 무엇이고 HTML과 어떻게 다를까?

HTML과 CSS의 역할을 구분하고, 같은 작은 정원 문서에 색상·배경·여백을 적용합니다. 실행 가능한 예제와 세 가지 변형 실습으로 스타일이 바뀌는 범위를 확인할 수 있습니다.

CSS 강좌 / transform과 transition으로 상태 변화 표현하기

CSS 강좌 / transform과 transition으로 상태 변화 표현하기

transform의 이동·회전·확대와 transition의 시간·곡선·지연을 비교합니다. 문서 흐름, 키보드 초점과 움직임 감소 설정을 전체 예제로 확인할 수 있습니다.

CSS / Tutorial / 원 또는 타원 만드는 방법

CSS / Tutorial / 원 또는 타원 만드는 방법

CSS의 border-radius 속성으로 원 또는 타원을 만들 수 있습니다. HTML 문서에 다음과 같이 내용이 없는 요소를 하나 만듭니다. 적절히 크기를 정하여 정사각형을 만들고, 배경색을 넣습니다. border-radius 속성을 추가하고, 값에 50%를 넣으면 원이 만들어집니다.

CSS / Tutorial / 삼각형 만드는 방법

CSS / Tutorial / 삼각형 만드는 방법

CSS의 border 속성으로 삼각형을 만들 수 있습니다. 여러 형태의 삼각형을 만들고, 그 삼각형을 회전하는 방법을 알아봅니다.

CSS 강좌 / 기본 선택자 - 요소, 클래스, ID, 속성

CSS 강좌 / 기본 선택자 - 요소, 클래스, ID, 속성

요소·클래스·ID·속성 선택자를 같은 HTML에 적용해 대상과 결과를 비교합니다. 복합 클래스, 공백으로 구분한 속성값, 필수 입력칸을 포함한 전체 예제와 선택자 수정 실습을 제공합니다.

CSS 강좌 / 표와 셀의 크기 조절하기

CSS 강좌 / 표와 셀의 크기 조절하기

표의 자동·고정 레이아웃, 30:70 열 너비, 긴 문자열의 영향을 같은 데이터로 비교합니다. 모바일 가로 스크롤과 키보드 이동을 확인하고 말줄임 원문을 보존하는 방법을 설명합니다.