Flexbox & 반응형 웹

6주차: 기기 화면을 완벽하게 제어하는 유연한 배치

오늘의 학습 목표

1. 문서 흐름의 한계를 넘는 Flexbox 속성 이해하기

2. 화면 크기에 맞춰 레이아웃을 변화시키는 Media Query 활용하기

3. 조별 평가 기준에 맞춘 '티어 리스트(Tier List)' 레이아웃 구현하기

Step 1. 복습 퀴즈 타임 🧠

지난 주에 학습한 박스 모델(Box Model)과 Position 속성을 점검해 봅시다.

QuizN 스피드 퀴즈

박스 모델 & Position

여백(margin/padding) 설정부터
요소의 위치를 지정하는 absolute, fixed까지!
스마트폰을 준비해 주세요.

EVENT

오늘의 시상: 행운의 5등!

1등만 시상하면 아쉽죠! 🙅‍♂️
오늘 복습할 Position 속성은 static, relative, absolute, fixed, sticky 총 5개입니다.
이에 맞춰 모든 문제를 끝까지 완주한 5등 학생에게 특별 간식을 증정합니다! 🎯

Step 2. 지난주 '아트 월' 리뷰 및 시상식 🛠️

GitHub 웹 조립 매뉴얼

팀원

개별적으로 작성한 코드(member_이름.html)를 팀장 저장소에 Upload files 기능으로 업로드합니다.

팀장

index.html 수정(✏️) 버튼을 클릭하여, 팀원들의 코드를 정해진 영역에 복사하여 붙여넣은 뒤 Commit changes를 진행합니다.

충돌(Conflict) 주의보

여러 명이 동시에 index.html을 수정하고 저장하면 기존 코드가 손실될 수 있습니다. 반드시 팀장 1명만 파일을 통합하세요.

🏆

우리 조 아트 월 내부 시상식

지난주 각자의 자리에서 멋진 기여를 해준 조원들을 위해
서로 칭찬하며 아래의 상을 수여합시다!

📐

픽셀 깎는 장인 상

배지(absolute)와 비밀 메모(hidden)의 위치를 픽셀 단위로 정교하게 배치한 디테일 장인에게 수여합니다.

🛡️

깃허브 수호자 상

코드 충돌의 위기를 극복하고 조원들의 코드를 하나의 완벽한 페이지로 조립해 낸 평화 유지군에게 수여합니다.

💡

씬스틸러 상

누구도 예상치 못한 기발한 버킷리스트 내용이나 센스 있는 숨김 메모로 조원들에게 큰 웃음을 안겨준 사람에게 수여합니다.

Step 3. 실습실: Flexbox 제어 패널 🎛️

복잡한 float 설정 대신 직관적인 Flexbox 속성을 통해 레이아웃의 변화를 확인합니다.

속성 제어기

속성을 변경하면 변경된 결과에 대한 설명이 출력됩니다.

.container { display: flex; }
1
2
3

Step 4. 조별 미션: 티어 리스트 구현 🏆

"어떤 재미있는 주제들이 있는지 후보 리스트를 확인하고 룰렛을 돌려 결정해 봅시다!"

룰렛 후보 리스트 (총 10개)

🍔 학교 주변 식당/맛집 티어 📚 1학년 전공/교양 체감 난이도 🎮 장르별 게임 선호도 🎬 명작 영화/드라마 랭킹 🍜 배달 음식 야식 메뉴 티어 📱 대학생 필수 스마트폰 앱 ☕ 프랜차이즈 카페 브랜드 선호도 🍪 편의점 과자/아이스크림 취향 🎵 작업할 때 듣기 좋은 노동요 장르 🚌 최악의 통학/출근 지옥철 노선

오늘의 실습 주제 돌리기

❓ 버튼을 눌러주세요 ❓

팀장: 티어 리스트 뼈대 구성

  • 1. GitHub에 tier-maker 저장소 생성
  • 2. 아래 뼈대 코드를 복사하여 index.html 작성
  • 3. CSS 내의 /* TODO: ... */ 주석을 찾아 Flexbox 속성을 작성합니다.

팀원: 평가 항목 등록

  • 1. 주제에 맞는 이미지를 1인당 2~3개씩 (총 10개 내외) 준비합니다.
  • 2. 조장의 images 폴더에 업로드
  • 3. 아래 아이템 코드를 작성하여 조장에게 전달합니다.

구현 및 테스트 안내

팀장이 CSS의 TODO 5개 영역에 Flexbox 코드를 올바르게 작성해야만 레이아웃이 정상적으로 출력됩니다.

브라우저에서 항목을 이동할 수 있는 기능(Drag & Drop)이 내장되어 있습니다. 완성 후 조원들과 함께 드래그 기능을 테스트해 보세요.
(※ 드래그 앤 드롭 및 미리보기 기능은 PC 환경 기준으로 제공됩니다.)

Step 4-1. 렌더링 미리보기 (정답 화면)

🏆 우리 조 커스텀 티어 리스트

수업 중 도출된 Flexbox 정답 레이아웃이 적용된 완성 화면입니다.

S
최우수작 1
최우수작 2
A
우수작 1
우수작 2
우수작 3
B
평작 1
C
취향작
D

최우수작 1

📌 아이템 대기열

대기 1
대기 2
대기 3

Step 4-2. 티어 리스트 레이아웃 분석

작성해야 할 TODO 영역의 Flexbox 적용 원리를 분석합니다.

가로 배치 (라벨/아이템)

.tier-row {
  display: flex;
}

각 등급을 나타내는 행(Row)입니다. flex-direction: row;가 기본 적용되어 좌우로 나란히 배치됩니다.

유연한 줄바꿈 (Wrap)

.tier-items {
  display: flex;
  flex-wrap: wrap;
}

요소가 부모 영역을 넘어갈 경우, 억지로 구겨지지 않고 자연스럽게 다음 줄로 내려가도록 만듭니다.

잔여 공간 채우기 (Grow)

.tier-items {
  flex-grow: 1;
}

고정된 너비의 라벨을 제외하고, 빈 영역을 아이템 드롭 영역이 꽉 채우도록 점유율을 지정합니다.

모바일 반응형 (Media Query)

@media (max-width: 800px) {
  .tier-row { flex-direction: column; }
}

화면이 800px 이하가 되면 가로(row) 배치를 세로(column) 방향으로 전환하여 모바일에 최적화합니다.

🚀 Step 5. 개별 과제 제출 안내

제출 기한: 다음 주 수업 전까지

"나만의 우선순위에 맞춰 티어 리스트를 재배열하세요"

수업 시간에 완성한 조별 티어 리스트 코드를 바탕으로, 항목들을 나만의 기준에 따라 S~D 등급으로 재배치합니다. Flexbox 속성을 세밀하게 조정하여 가장 완성도 높은 웹페이지를 제출하세요.

레이아웃 필수 적용

  • 나만의 배치
    오직 내 취향에 맞춰 티어를 새롭게 지정해 봅니다. HTML 코드 위치를 옮기거나, CSS order 속성 활용!
  • 정렬 최적화
    justify-content, gap 등을 조절하여 아이템들을 깔끔하게 정렬

과제 제출 형식

  • 필수 스크린샷 2장:
    1. 재배열된 PC 전체 화면
    2. 브라우저 폭을 줄인 모바일 화면
  • 추가/수정한 CSS 코드 블록 (마크다운)
  • GitHub Pages 배포 링크 필수 포함
  • 마크다운 작성 후 PDF 문서로 제출

다음 주, 웹 디자인의 완성 (Grid & 애니메이션)

CSS Grid & 함수

  • 2차원(행/열) 완벽 제어, Grid 레이아웃
  • var(), calc() 등 스마트한 CSS 함수

Transition & Animation

  • 상태 변화를 부드럽게 잇는 전환 효과
  • 키프레임(@keyframes)을 활용한 동적 애니메이션
생동감 넘치는 웹페이지 만들기!

다음 주 플립러닝 영상에서 만나요! 수고하셨습니다. 👏