AD JB Toolbox 01

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

CSS(Cascading Style Sheets)는 HTML 문서의 색상, 글자, 여백과 배치처럼 화면에 보이는 모양을 정하는 언어입니다. HTML은 제목·문단·링크 등 콘텐츠의 의미와 구조를 만들고, CSS는 그 구조를 어떻게 보여 줄지 정합니다. 같은 HTML을 유지하면서 CSS만 바꾸면 내용은 그대로 두고 디자인을 바꿀 수 있습니다.

HTML과 CSS는 어떤 일을 나누어 할까요?

정원 안내 페이지를 만든다고 생각해 보세요. “작은 정원”이 페이지의 가장 중요한 제목이라는 사실은 HTML의 h1으로 표현합니다. 제목을 초록색으로 표시할지, 글자 크기를 얼마로 할지는 CSS에서 정합니다. 색이 초록색이라는 이유만으로 일반 문단이 제목의 의미를 갖게 되는 것은 아닙니다.

구분 작은 정원 페이지에서 하는 일 예시
HTML 어떤 내용이며 어떤 역할인지 표시 제목은 h1, 설명은 p, 이동은 a
CSS 그 요소의 시각적 표현을 지정 제목 색상, 안내문의 테두리와 안쪽 여백
JavaScript 이벤트에 따른 동작과 데이터 변경을 처리 버튼을 누르면 예약 상태를 바꾸기

JavaScript는 웹페이지에 동작을 추가하는 프로그래밍 언어입니다. CSS도 마우스를 올렸을 때 모양을 바꾸거나 애니메이션을 보여 줄 수 있으므로, 화면이 변한다고 해서 반드시 JavaScript를 쓴 것은 아닙니다. 여기서는 먼저 내용과 모양을 분리하는 데 집중합니다.

CSS를 적용하지 않아도 글자가 보이는 이유

브라우저에는 기본 스타일이 있습니다. CSS를 직접 작성하지 않아도 제목이 크게 보이고, 문단 사이에 여백이 있으며, 링크에 밑줄이 나타나는 이유입니다. 기본 글꼴과 여백은 브라우저와 사용자 설정에 따라 달라질 수 있습니다. CSS를 추가하면 필요한 모양을 직접 지정할 수 있습니다.

다음 HTML을 텍스트 편집기에 붙여 넣고 UTF-8 형식의 index.html로 저장한 뒤 브라우저에서 열어 보세요. 파일 이름이 index.html.txt가 되지 않았는지 확인합니다. 파일 확장자가 숨겨져 있다면 편집기의 저장 형식과 파일 속성에서 확장자를 확인하세요.

<main>
    <h1>작은 정원</h1>
    <p>식물을 기르고 쉬어 갈 수 있는 공간입니다.</p>
    <p class="notice">매일 오전 9시에 문을 엽니다.</p>
    <a href="#visit">방문 안내</a>
    <h2 id="visit">방문할 때 준비할 것</h2>
    <p>물병과 편한 신발을 준비하세요.</p>
  </main>

이 조각은 본문의 구조를 보여 주는 예입니다. 바로 실행하려면 아래 전체 예제를 사용합니다. 제목과 안내 문장의 문구를 먼저 읽어 두면, CSS를 바꿀 때 실제 콘텐츠가 바뀌었는지 모양만 바뀌었는지 구분하기 쉽습니다.

선택자, 속성과 값으로 스타일 정하기

h1 {
  color: #087f5b;
}

h1은 꾸밀 대상을 고르는 선택자입니다. color는 글자색이라는 특성을 나타내는 속성이며, #087f5b는 그 속성에 넣을 값입니다. color: #087f5b;처럼 속성과 값을 묶어 쓴 한 항목을 선언이라고 합니다. 여섯 자리 색상 표기는 빨강·초록·파랑 성분을 나타내는 16진수 색상값입니다.

이 규칙은 HTML에 있는 h1 요소의 글자색을 초록색으로 바꿉니다. 문장을 번역하거나 문단을 추가하지는 않습니다. 안내 문장만 구별해서 꾸미려면 HTML에 class="notice"를 붙이고 CSS에서 .notice를 선택합니다. 점은 CSS의 클래스 선택자 표기이며 HTML의 클래스 이름에는 넣지 않습니다.

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;
      color: #333;
      background-color: #f4f7f5;
      font-family: sans-serif;
      line-height: 1.7;
    }
    main { max-width: 640px; }
    h1 { color: #087f5b; }
    .notice {
      padding: 16px;
      border: 1px solid #087f5b;
      background-color: #e9f7ef;
    }
  </style>
</head>
<body>
<main>
    <h1>작은 정원</h1>
    <p>식물을 기르고 쉬어 갈 수 있는 공간입니다.</p>
    <p class="notice">매일 오전 9시에 문을 엽니다.</p>
    <a href="#visit">방문 안내</a>
    <h2 id="visit">방문할 때 준비할 것</h2>
    <p>물병과 편한 신발을 준비하세요.</p>
  </main>
</body>
</html>

저장한 파일을 열면 연한 배경 위에 초록색 제목이 보이고, 운영 시간 안내에는 테두리와 여백이 생깁니다. style 요소 안에 있는 내용이 CSS입니다. 다음 표는 예제에서 사용한 속성을 읽기 위한 최소한의 설명입니다.

속성 예제에서의 역할
color / background-color 글자색과 배경색을 각각 지정합니다.
font-family / line-height 글꼴 계열과 줄 높이를 지정합니다. 단위 없는 1.7은 글자 크기의 1.7배에 해당하는 줄 높이입니다.
margin / padding margin은 요소 바깥의 여백, padding은 테두리 안쪽에서 내용까지의 여백입니다.
border 테두리의 두께·선 모양·색을 함께 지정합니다. 1px solid는 1픽셀 두께의 실선입니다.
max-width 내용 영역의 최대 너비를 제한합니다. 화면이 좁으면 이 값만큼의 너비를 무조건 차지하는 것은 아닙니다.

모든 속성을 지금 외울 필요는 없습니다. “어떤 요소를 선택했고, 그 요소의 어떤 모양을 바꾸는가?”를 짚어 보는 것이 우선입니다. 적용 위치를 파일로 분리하는 방법은 CSS를 HTML에 적용시키는 방법에서 같은 안내 페이지로 이어서 확인할 수 있습니다.

세 가지를 바꾸며 결과 비교하기

  1. h1의 color를 #1d4ed8로 바꿉니다. 저장 후 새로고침하면 큰 제목만 파란색이 됩니다. 방문 안내의 h2와 일반 문단의 색은 이 규칙의 대상이 아닙니다.
  2. body의 line-height를 1.7에서 2로 바꿉니다. 본문 줄 높이가 더 커집니다. 두 줄 이상인 문단을 넣거나 창을 좁히면 차이를 더 쉽게 확인할 수 있습니다.
  3. .notice의 background-color를 #fff4cc로 바꿉니다. 운영 시간 안내의 배경만 노란빛으로 변합니다. 페이지 전체 배경은 body에 따로 지정되어 있으므로 그대로입니다.

한꺼번에 세 값을 바꾸지 말고 한 항목을 수정할 때마다 저장하고 확인하세요. 결과가 다르면 바꾼 파일과 브라우저에서 연 파일이 같은지, 중괄호와 콜론이 남아 있는지부터 살펴봅니다. 실습을 마치면 값 세 개를 원래대로 되돌리고 새로고침해 처음 화면과 비교하세요. 이 과정에서 HTML의 제목·문단·링크 구조가 그대로 유지되는 것이 핵심입니다.

같은 카테고리의 다른 글
CSS 강좌 / CSS란 무엇이고 HTML과 어떻게 다를까?

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

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

CSS 강좌 / 상속·우선순위·캐스케이드로 최종 스타일 결정하기

CSS 강좌 / 상속·우선순위·캐스케이드로 최종 스타일 결정하기

상속과 직접 지정의 차이부터 중요도·선택자 우선순위·작성 순서까지 단계별로 판단합니다. 같은 문단의 색상·여백·테두리를 예측하는 전체 예제와 !important·인라인 스타일의 비교 실습을 제공합니다.

CSS / Tutorial / 문자열 자르는 방법

CSS / Tutorial / 문자열 자르는 방법

웹페이지에 출력하는 문자열의 길이는 서버단에서 조절하는 게 보통입니다. 하지만, 어떤 경우에는 그게 불가능할 수 있습니다. 이미 전송 받은 문자열을 잘라야 하는 상황이 생길 수 있습니다. CSS를 이용하여 문자열의 일부만 보여주는 방법을 소개해드립니다.

CSS / Tutorial / placeholder의 색, 글자 모양 등 꾸미는 방법

CSS / Tutorial / placeholder의 색, 글자 모양 등 꾸미는 방법

placeholder는 HTML5에서 새로 나온 속성으로 input 요소나 textarea 요소에 안내문을 넣을 수 있습니다. 기본 모양은 회색의 글자로, 배경색이 하얀색 또는 밝은 색이면 보기에 괜찮습니다. 하지만 배경색이 어두운 색이거나 화려한 색이면 회색 글자가 어울리지 않을 수 있습니다. placeholder는 ::placeholder 선택자로 선택하여 꾸밀 수 있습니다.

CSS / Tutorial / 마우스 호버 효과 /  이미지 확대하는 방법

CSS / Tutorial / 마우스 호버 효과 / 이미지 확대하는 방법

이미지에 마우스를 올렸을 때 이미지가 확대되는 효과를 만들어보겠습니다. 다음과 같이 이미지가 들어간 간단한 HTML 문서를 만듭니다.

CSS / Tutorial / 마름모 만드는 방법

CSS / Tutorial / 마름모 만드는 방법

CSS로 삼각형을 만들 수 있다면 마름모는 쉽게 만들 수 있습니다. 삼각형을 두 개 붙이면 마름모가 되기 때문입니다. 마름모는 네 변의 길이가 같은 사각형이므로, 이등변삼각형 두 개를 붙이며 됩니다.

CSS / Tutorial / ul, ol 가운데 정렬하는 방법

CSS / Tutorial / ul, ol 가운데 정렬하는 방법

목록 자체가 아니라 목록 안의 내용만 가운데 정렬할 때는 text-align 속성을 사용합니다. 목록 요소 자체를 가운데 정렬할 때는 margin 속성을 사용합니다. 만약 요소의 내용에 맞게 자동으로 크기가 정해지게 하고 싶으면 display 속성을 사용합니다.

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

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

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

CSS / Tutorial / 상속(inheritance)

CSS / Tutorial / 상속(inheritance)

CSS 속성은 상속하는 속성과 상속하지 않는 속성이 있습니다. 상속하는 속성은 자식 요소에 영향을 미칩니다. 상속하지 않는 속성은 자식 요소에 영향을 미치지 않습니다.

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

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

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