3주차: CSS 기초

CSS를 활용하여 웹페이지에 기본적인 스타일링을 적용하는 방법을 학습합니다

학습 목표

🎨

CSS 선택자

다양한 CSS 선택자의 종류와 사용법을 학습합니다

🌈

색상과 폰트

색상 시스템과 웹 폰트 적용 방법을 익힙니다

📦

박스 모델

margin, padding, border의 개념을 이해합니다

🔗

CSS 연결

외부 CSS 파일을 연결하는 방법을 배웁니다

강의 내용

1. CSS 기초와 선택자

CSS(Cascading Style Sheets)는 HTML 문서의 스타일을 정의하는 언어입니다.

CSS 기본 문법

선택자 {
    속성: 값;
    속성: 값;
}

/* 예시 */
h1 {
    color: blue;
    font-size: 24px;
}

주요 선택자 종류

태그 선택자
p {
    color: black;
    line-height: 1.5;
}
클래스 선택자
.highlight {
    background-color: yellow;
    font-weight: bold;
}

/* HTML: <p class="highlight">강조된 텍스트</p> */
ID 선택자
#header {
    background-color: #333;
    color: white;
    padding: 20px;
}

/* HTML: <div id="header">헤더 내용</div> */
조합 선택자
/* 후손 선택자 */
nav ul {
    list-style: none;
}

/* 자식 선택자 */
article > p {
    margin-bottom: 15px;
}

/* 인접 선택자 */
h2 + p {
    font-weight: bold;
}

2. 색상과 단위

CSS에서 색상과 크기를 지정하는 다양한 방법을 알아봅시다.

색상 표현 방법

키워드
color: red;
background-color: blue;
border-color: green;
HEX 코드
color: #ff0000;        /* 빨간색 */
color: #00ff00;        /* 초록색 */
color: #0000ff;        /* 파란색 */
color: #333;           /* 짧은 형태 */
RGB / RGBA
color: rgb(255, 0, 0);           /* 빨간색 */
color: rgba(255, 0, 0, 0.5);     /* 반투명 빨간색 */
background: rgba(0, 0, 0, 0.8);  /* 반투명 검은색 */
HSL / HSLA
color: hsl(0, 100%, 50%);        /* 빨간색 */
color: hsl(120, 100%, 50%);      /* 초록색 */
color: hsla(240, 100%, 50%, 0.5); /* 반투명 파란색 */

CSS 단위

절대 단위
  • px - 픽셀 (가장 일반적)
  • pt - 포인트 (인쇄용)
  • cm, mm - 센티미터, 밀리미터
상대 단위
  • % - 부모 요소 대비 백분율
  • em - 현재 요소의 폰트 크기 기준
  • rem - 루트 요소의 폰트 크기 기준
  • vw, vh - 뷰포트 너비/높이의 1%

3. 폰트와 텍스트

텍스트의 외관을 제어하는 CSS 속성들을 알아봅시다.

폰트 관련 속성

body {
    font-family: 'Noto Sans KR', Arial, sans-serif;
    font-size: 16px;
    font-weight: 400;
    line-height: 1.6;
}

h1 {
    font-family: Georgia, serif;
    font-size: 2.5em;
    font-weight: bold;
    font-style: normal;
}

.italic-text {
    font-style: italic;
}

.small-caps {
    font-variant: small-caps;
}

텍스트 관련 속성

.text-styling {
    color: #333;
    text-align: center;
    text-decoration: underline;
    text-transform: uppercase;
    letter-spacing: 2px;
    word-spacing: 5px;
    text-indent: 20px;
    text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
}

.no-decoration {
    text-decoration: none; /* 링크 밑줄 제거 */
}

.justify-text {
    text-align: justify;
}

4. 박스 모델

CSS 박스 모델은 모든 HTML 요소를 둘러싸는 박스를 설명합니다.

margin
border
padding
content

박스 모델 속성

.box-example {
    /* 내용 영역 크기 */
    width: 300px;
    height: 200px;
    
    /* 안쪽 여백 */
    padding: 20px;
    padding-top: 10px;
    padding-right: 15px;
    padding-bottom: 10px;
    padding-left: 15px;
    /* 축약형: padding: 10px 15px; (상하 좌우) */
    
    /* 테두리 */
    border: 2px solid #333;
    border-width: 2px;
    border-style: solid;
    border-color: #333;
    
    /* 바깥쪽 여백 */
    margin: 20px;
    margin: 20px auto; /* 가로 중앙 정렬 */
    
    /* 배경색 */
    background-color: #f0f0f0;
}

Box-sizing 속성

/* 기본값: content-box */
.content-box {
    box-sizing: content-box;
    width: 300px;
    padding: 20px;
    border: 2px solid #333;
    /* 실제 너비 = 300px + 40px(padding) + 4px(border) = 344px */
}

/* 권장: border-box */
.border-box {
    box-sizing: border-box;
    width: 300px;
    padding: 20px;
    border: 2px solid #333;
    /* 실제 너비 = 300px (padding과 border 포함) */
}

/* 전체 적용 */
* {
    box-sizing: border-box;
}

5. CSS 연결 방법

HTML 문서에 CSS를 적용하는 세 가지 방법이 있습니다.

1. 외부 스타일시트 (권장)

<head>
    <link rel="stylesheet" href="styles.css">
    <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR">
</head>

장점: 여러 페이지에서 재사용 가능, 유지보수 용이, 캐싱 효과

2. 내부 스타일시트

<head>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 20px;
        }
        
        h1 {
            color: #333;
            text-align: center;
        }
    </style>
</head>

사용 시기: 단일 페이지 전용 스타일, 특정 페이지만의 고유한 스타일

3. 인라인 스타일

<p style="color: red; font-weight: bold;">
    이 텍스트는 빨간색이고 굵습니다.
</p>

<div style="background-color: #f0f0f0; padding: 10px; border-radius: 5px;">
    스타일이 직접 적용된 박스
</div>

주의: 유지보수가 어려우므로 특별한 경우가 아니면 사용 지양

실습 활동

실습 1: 기본 HTML 페이지 스타일링

목표: 2주차에서 만든 HTML 페이지에 기본적인 CSS 스타일을 적용합니다.

요구사항:

  • 외부 CSS 파일 생성 및 연결
  • 웹 폰트 적용 (Google Fonts 활용)
  • 색상 체계 설정 (기본색, 강조색 등)
  • 박스 모델을 활용한 여백과 테두리 설정
  • 텍스트 스타일링 (크기, 굵기, 정렬)
/* styles.css */
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;700');

* {
    box-sizing: border-box;
}

body {
    font-family: 'Noto Sans KR', sans-serif;
    line-height: 1.6;
    margin: 0;
    padding: 0;
    color: #333;
    background-color: #f8f9fa;
}

header {
    background-color: #007bff;
    color: white;
    padding: 20px 0;
    text-align: center;
}

h1 {
    margin: 0;
    font-size: 2.5rem;
    font-weight: 700;
}

nav ul {
    list-style: none;
    padding: 0;
    margin: 20px 0 0 0;
}

nav li {
    display: inline-block;
    margin: 0 15px;
}

nav a {
    color: white;
    text-decoration: none;
    font-weight: 400;
    transition: color 0.3s;
}

nav a:hover {
    color: #ffc107;
}
GitHub Copilot

실습 2: Copilot과 함께 CSS 속성 자동완성

목표: GitHub Copilot을 활용하여 효율적으로 CSS를 작성합니다.

Copilot 활용 팁:

  • CSS 속성 자동완성 받기
  • 색상 코드 제안받기
  • 반응형 CSS 패턴 생성하기
  • CSS 변수(Custom Properties) 활용하기
💡 Copilot CSS 프롬프트 예시:
  • "모던한 버튼 스타일"
  • "카드 레이아웃을 위한 CSS"
  • "그라데이션 배경 효과"
  • "CSS 변수를 활용한 컬러 시스템"

실습 3: 박스 모델 실험

목표: 박스 모델의 동작을 직접 확인하고 실험해봅니다.

실험 내용:

  • 동일한 width 값으로 content-box와 border-box 비교
  • margin collapse 현상 관찰
  • padding과 margin의 차이점 확인
  • 브라우저 개발자 도구로 박스 모델 시각화
<!-- HTML -->
<div class="box-demo">
    <div class="box content-box">content-box</div>
    <div class="box border-box">border-box</div>
</div>
/* CSS */
.box {
    width: 200px;
    height: 100px;
    padding: 20px;
    border: 5px solid #007bff;
    margin: 20px;
    background-color: #e9ecef;
    text-align: center;
    line-height: 60px;
}

.content-box {
    box-sizing: content-box;
}

.border-box {
    box-sizing: border-box;
}

주차 요약

핵심 포인트

  • CSS 선택자: 태그, 클래스, ID 선택자
  • 색상 표현: HEX, RGB, HSL
  • 폰트와 텍스트 스타일링
  • 박스 모델: margin, padding, border
  • 외부 CSS 파일 연결 방법

다음 주 미리보기

4주차에서는 CSS 레이아웃을 학습합니다. Flexbox의 기초, positioning, 그리고 반응형 디자인의 개념을 다룰 예정입니다.