CSS 프레임워크 활용
컴포넌트 중심 Bootstrap과 유틸리티 중심 Tailwind를 비교해 디자인 자유도와 개발 속도에 맞게 선택합니다.
앞선 장들에서 우리는 CSS 기본기를 다지고, 고급 선택자, 레이아웃 기법(Flexbox, Grid), 동적 효과(트랜지션, 애니메이션), 효율적인 코드 관리(변수, calc(), 아키텍처, Sass)까지 학습했습니다.
앞선 절들에서는 복잡한 디자인을 순수 CSS로 구현할 때 필요한 선택자, 레이아웃, 전환, 반응형 규칙을 점검했습니다.
하지만 실제 웹 개발 현장에서는 개발 속도를 높이고, 디자인 일관성을 유지하며, 반응형 웹 디자인을 쉽게 구현하기 위해 CSS 프레임워크를 적극적으로 활용합니다.
CSS 프레임워크는 미리 정의된 스타일, 컴포넌트, 반응형 그리드 시스템 등을 제공해, 처음부터 모든 CSS를 작성하는 대신 조립식으로 웹 페이지를 구성할 수 있도록 돕는 도구입니다.
이 장에서는 CSS 프레임워크 개념을 정리하고, 널리 쓰이는 Bootstrap과 Tailwind CSS의 특징/활용법을 비교해 봅니다.
각 프레임워크의 장단점을 비교하고, 프로젝트에 적합한 프레임워크를 선택하는 기준도 함께 제시합니다.
CSS FRAMEWORKS · COMPARISON
CSS 도구 선택: 후보를 같은 화면에서 비교한다
컴포넌트 제공과 유틸리티 조합은 출발점의 차이다. 속도·디자인 자유도만으로 자동 결정하지 않고, 현재 시스템과 후보를 같은 요구사항으로 비교한다.
기존 시스템 · 자체 CSS
이미 필요한 tokens·components가 있다면 확장 비용을 기준선으로 잡는다. 작은 화면에서는 필요한 규칙만 직접 관리하는 선택도 가능하다.
Bootstrap형 · 컴포넌트
준비된 form·nav·modal·grid로 시작한다. 디자인 변경 범위, 사용하는 JavaScript 동작과 필요한 CSS만 포함하는 구성을 확인한다.
Tailwind형 · 유틸리티
유틸리티와 tokens를 조합해 디자인한다. 재사용 컴포넌트·접근성 동작은 직접 설계하며 build가 실제 사용하는 완전한 클래스 이름을 감지해야 한다.
공통 도입 기준을 만족하는 선택을 한다
키보드·스크린 리더 동작, 필요한 runtime JavaScript, production CSS 크기와 업그레이드 책임을 확인한다. 조건을 충족하면 도입하고, 불확실하면 한 화면에서 검증하며, 비용이 크면 현재 시스템을 유지한다.
CDN 실습과 production 빌드를 구분한다. Bootstrap도 커스터마이징할 수 있고 Tailwind도 빠른 UI 조합에 사용할 수 있다. 실제 버전·빌드·컴포넌트 구성을 기준으로 비교한다.
CSS 프레임워크란 무엇이며 왜 필요한가?
CSS 프레임워크 활용에서는 스타일 규칙, 레이아웃 계산, 화면 반영 결과를 정리합니다.
CSS 프레임워크(CSS Framework): 웹 페이지의 스타일링을 위해 미리 작성된 CSS 코드와 컴포넌트, 그리드 시스템 등을 모아 놓은 라이브러리입니다.
개발자가 반복적인 CSS 코드를 직접 작성할 필요 없이, 프레임워크가 제공하는 클래스 이름만 HTML 요소에 추가하여 스타일을 적용할 수 있습니다.
필요성개발 속도 향상: 자주 사용되는 UI 컴포넌트(버튼, 폼, 내비게이션 바, 카드 등)와 레이아웃 시스템이 미리 구축되어 있어, CSS를 처음부터 작성할 필요 없이 빠르게 웹 페이지를 구성할 수 있습니다.
디자인 일관성 유지: 프레임워크가 제공하는 디자인 시스템을 따르므로, 여러 개발자가 작업하거나 프로젝트가 확장될 때도 일관된 UI/UX를 유지하기 쉽습니다.
반응형 웹 디자인 용이: 대부분의 프레임워크는 모바일 우선(Mobile-First) 또는 유동적인 그리드 시스템을 내장하고 있어, 다양한 기기 화면 크기에 자동으로 최적화된 레이아웃을 쉽게 구현할 수 있습니다.
브라우저 호환성: 프레임워크는 다양한 브라우저에서 일관되게 작동하도록 고려되어 있으므로, 개발자가 직접 브라우저별 CSS 이슈를 처리할 필요가 줄어듭니다.
커뮤니티 및 문서화: 인기 있는 프레임워크는 활발한 커뮤니티와 풍부한 문서, 예제를 제공하여 문제 해결이나 학습에 용이합니다.
대표적인 CSS 프레임워크 살펴보기
수많은 CSS 프레임워크가 존재하지만, 여기서는 가장 널리 사용되는 두 가지 유형의 프레임워크를 소개합니다.
Bootstrap: 컴포넌트 기반 프레임워크
Bootstrap은 미리 만든 컴포넌트와 그리드를 제공하는 CSS/JavaScript 프레임워크입니다. 여기서는 원래 예제의 5.3.3 버전을 기준으로 읽고, 최신판으로 바꾸더라도 CSS·JavaScript·integrity 값을 서로 맞춰 확인해야 합니다.
미리 디자인된 UI 컴포넌트와 강력한 그리드 시스템을 제공하여, 웹사이트를 빠르고 쉽게 구축할 수 있도록 돕습니다.
특징- 컴포넌트 중심: 내비게이션 바, 캐러셀, 모달, 드롭다운, 폼 컨트롤 등 다양한 UI 컴포넌트가 CSS와 JavaScript로 미리 구현되어 있습니다.
- 반응형 그리드 시스템: 12열 그리드 시스템을 기반으로
col-sm-*,col-md-*,col-lg-*와 같은 클래스를 사용하여 반응형 레이아웃을 쉽게 구성할 수 있습니다. - JavaScript 플러그인: 이 예제의 Bootstrap 5는 jQuery 없이 동작합니다. Collapse 같은 동작은 CSS 클래스만으로 실행되지 않고 Bootstrap JavaScript와
data-bs-*연결이 필요합니다. - Sass 기반: 내부적으로 Sass로 작성되어 있어, 필요에 따라 변수나 믹스인을 오버라이드하여 커스터마이징이 용이합니다.
-
장점
- 높은 생산성: 기본적인 UI를 빠르게 구현할 수 있습니다.
- 풍부한 컴포넌트: 다양한 UI 요소가 제공되어 개발 시간을 단축합니다.
- 넓은 커뮤니티: 문제 발생 시 해결책을 찾기 쉽고, 학습 자료가 많습니다.
- 일관된 디자인: 기본적인 디자인 톤이 정해져 있어 통일감 있는 웹사이트를 만들 수 있습니다.
-
단점
- 번들 크기: 모든 기능을 포함하므로 CSS/JS 파일 크기가 커질 수 있습니다. (커스터마이징 빌드를 통해 최적화 가능)
- 획일적인 디자인: 기본 테마를 그대로 사용하면 웹사이트들이 비슷해 보일 수 있습니다. (충분한 커스터마이징 필요)
- 불필요한 스타일: 사용하지 않는 컴포넌트의 CSS까지 포함될 수 있습니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bootstrap 카드 예시</title>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
</head>
<body>
<div class="container mt-5">
<div class="row">
<div class="col-md-4">
<div class="card" style="width: 18rem;">
<div class="card-body">
<h5 class="card-title">카드 제목</h5>
<p class="card-text">이것은 Bootstrap 프레임워크를 사용하여 만든 간단한 카드 컴포넌트입니다. 미리 정의된 클래스로 쉽게 스타일링할 수 있습니다.</p>
<a href="#" class="btn btn-primary">자세히 보기</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card" style="width: 18rem;">
<div class="card-body">
<h5 class="card-title">또 다른 카드</h5>
<p class="card-text">Bootstrap의 그리드 시스템을 사용하여 컬럼으로 배치된 다른 카드입니다.</p>
<a href="#" class="btn btn-success">구매하기</a>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
</body>
</html>container,row,col-md-4,card,card-img-top,card-body,card-title,card-text,btn,btn-primary등 미리 정의된 클래스들을 HTML에 추가하여 스타일을 적용하는 것을 볼 수 있습니다.
Tailwind CSS: 유틸리티 우선 프레임워크
Tailwind CSS는 유틸리티 우선(Utility-first)이라는 접근 방식을 따르는 프레임워크입니다.
미리 정의된 컴포넌트 대신, flex, pt-4, text-center, rounded-lg와 같이 하나의 특정 CSS 속성-값 쌍을 나타내는 작고 재사용 가능한 유틸리티 클래스들을 제공합니다.
- 유틸리티 중심: 각 클래스가 하나의 특정 스타일에 매핑됩니다. 예를 들어,
mt-4는margin-top: 1rem;을 의미합니다. - 컴포넌트 없음: 미리 만들어진 UI 컴포넌트가 없으므로, 모든 UI는 개발자가 유틸리티 클래스를 조합하여 직접 구축해야 합니다.
- CSS-first 커스터마이징: Tailwind CSS v4는 CSS의
@theme에서 색상·간격·폰트 토큰을 선언하고 해당 값으로 유틸리티를 생성합니다. - 사용 클래스 감지: 소스에서 감지한 완전한 클래스 이름에 대응하는 CSS를 생성합니다. 개발 중에도 임의로 조립한
bg-+ 색상 +-500문자열을 모두 알아내지는 못합니다. 최종 크기는 사용하는 유틸리티·플러그인·출력 방식에 따라 확인합니다. - 반응형 디자인:
sm:,md:,lg:와 같은 프리픽스를 사용하여 반응형 디자인을 인라인으로 쉽게 적용할 수 있습니다. -
장점
- 높은 자유도: 디자인 제약이 없어 어떤 디자인이든 구현할 수 있습니다.
- 매우 작은 CSS 파일: 필요한 스타일만 포함되어 최종 빌드 파일이 가볍습니다.
- 코드 일관성: 유틸리티 클래스를 사용하므로 일관된 간격, 색상 시스템을 유지하기 쉽습니다.
- CSS 작성 없는 개발: CSS 파일을 직접 작성할 필요가 줄어듭니다.
-
단점
- HTML 비대화: 하나의 요소에 많은 유틸리티 클래스가 붙어 HTML 코드가 길어지고 복잡해질 수 있습니다.
- 초기 학습 곡선: 유틸리티 클래스 이름을 익히는 데 시간이 필요합니다.
- 디자인 시스템 구축 필요: 컴포넌트가 없으므로 재사용 가능한 컴포넌트 패턴을 직접 정의해야 합니다. (Tailwind UI와 같은 추가 도구로 보완 가능)
아래는 v3 Play CDN을 사용하는 학습 예제이며, 앞의 v4 @theme 설정 예제와는 버전이 다릅니다. Play CDN은 개발용이므로 운영 배포에서는 선택한 버전에 맞는 빌드 방식을 사용합니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tailwind CSS 카드 예시</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body>
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-10">
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<div class="bg-white rounded-lg shadow-md overflow-hidden">
<div class="p-6">
<h3 class="text-xl font-semibold mb-2 text-gray-900">카드 제목</h3>
<p class="text-gray-700 text-base mb-4">이것은 Tailwind CSS 유틸리티 클래스를 조합하여 만든 카드 컴포넌트입니다. CSS를 직접 작성하지 않고 HTML에서 스타일링합니다.</p>
<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
더 읽기
</button>
</div>
</div>
<div class="bg-white rounded-lg shadow-md overflow-hidden">
<div class="p-6">
<h3 class="text-xl font-semibold mb-2 text-gray-900">또 다른 카드</h3>
<p class="text-gray-700 text-base mb-4">Tailwind는 높은 자유도를 제공하며, 컴포넌트가 아닌 유틸리티 클래스들의 조합으로 스타일을 구성합니다.</p>
<button class="bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded">
구매하기
</button>
</div>
</div>
</div>
</div>
</body>
</html>- 위 예시에서는
max-w-7xl,mx-auto,grid,md:grid-cols-2,gap-6처럼 레이아웃 관련 클래스와,bg-white,rounded-lg,shadow-md,text-gray-700,hover:bg-blue-700같은 스타일 클래스를 조합해 화면을 구성합니다. Tailwind의 핵심은 이런 유틸리티 클래스를 작은 단위로 쌓아 원하는 결과를 만드는 방식에 있습니다.
두 예제를 서로 다른 HTML 파일로 저장해 비교하세요. Bootstrap CSS와 Play CDN은 외부 네트워크에 접근할 수 있어야 로드됩니다. 페이지가 기본 HTML처럼 보이면 클래스 철자를 바꾸기 전에 Network의 해당 요청 성공 여부를 확인하세요. CDN 요청 거부는 클래스 문법 오류와 다릅니다. v3 Play CDN은 이 장의 학습용이며 실제 배포용 빌드와 구별합니다. 두 카드의 버튼과 # 링크는 동작을 구현하지 않아 외형 확인만 가능합니다.
Bootstrap의 첫 카드에는 18rem 고정 너비가 있고 col-md-4는 md부터 부모 row의 4/12입니다. 예를 들어 기본 md container가 720px이면 열 하나는 240px인데, root의 기본 글자 크기가 16px이면 카드의 18rem은 288px이라 열보다 넓을 수 있습니다. 고정 카드 너비와 Grid 비율은 서로 다른 규칙입니다. 변형 실습에서는 두 .card의 inline width: 18rem을 지우고 w-100 클래스를 추가해 열 너비를 따르게 한 뒤 전후를 비교합니다.
어떤 CSS 프레임워크를 선택해야 할까?
프레임워크 선택은 프로젝트의 요구사항과 팀의 선호도에 따라 달라집니다.
-
Bootstrap (컴포넌트 기반)
-
추천
- 디자인에 큰 공을 들이지 않고 빠르게 프로토타입이나 관리자 페이지를 만들어야 할 때.
- 미리 만들어진 다양한 UI 컴포넌트가 필요하고, 이를 커스터마이징할 시간이 부족할 때.
- 표준화된 UI/UX를 선호하고, 디자인 일관성이 중요하지만 독창적인 디자인이 최우선이 아닐 때.
- CSS에 대한 지식이 많지 않아도 쉽게 시작하고 싶을 때.
-
고려 사항
- 파일 크기가 커질 수 있음.
- 기본 디자인을 벗어나려면 추가적인 오버라이드 CSS 작성이 필요함.
-
추천
-
Tailwind CSS (유틸리티 우선)
-
추천
- 완전히 독창적인 디자인을 구현하고 싶고, 디자인 시스템을 직접 구축할 의향이 있을 때.
- 프로젝트의 최종 빌드 파일 크기를 최소화하고 싶을 때.
- CSS를 직접 작성하지 않고 HTML 내에서 빠르게 스타일링하는 것을 선호할 때.
- React, Vue, Angular와 같은 컴포넌트 기반 프레임워크와 함께 사용하여 컴포넌트를 정의하고 유틸리티 클래스들을 캡슐화할 때.
-
고려 사항
- HTML 파일이 길어지고 복잡해질 수 있음.
- 초기 학습 곡선이 존재하며, 유틸리티 클래스 이름을 익혀야 함.
- 컴포넌트 재사용을 위한 별도의 추상화(예: JavaScript 컴포넌트)가 필요할 수 있음.
-
추천
선택은 우선 후보를 정하는 단계입니다. 같은 대표 화면에서 필요한 디자인 수정량, 키보드 동작, JavaScript 의존성, 실제 생성 CSS와 유지 비용을 비교하세요. Bootstrap도 테마를 변경할 수 있고 Tailwind도 빠르게 조합할 수 있으므로 도구 이름만으로 속도나 독창성을 확정하지 않습니다.
핵심 요약- 빨리 만들고 싶고, 일반적인 디자인이 괜찮아 → Bootstrap
- 자유롭게 만들고 싶고, 나만의 디자인 시스템을 구축할래 → Tailwind CSS
실습: CSS 프레임워크 사용해 보기
이번 실습에서는 Bootstrap 또는 Tailwind CSS 중 하나를 선택하여, 간단한 반응형 웹 페이지 레이아웃을 구성해 봅시다.
여기서는 Bootstrap을 기준으로 설명하며, Tailwind CSS를 선호한다면 해당 문서와 예시를 참고하여 유사한 구조를 만들어 보세요.
framework_layout.html 파일 작성<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bootstrap 반응형 레이아웃 실습</title>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
<style>
/* 실습을 위한 간단한 커스텀 스타일 (선택 사항) */
body {
background-color: #f8f9fa;
}
.header-section {
background-color: #343a40;
color: white;
padding: 40px 0;
text-align: center;
margin-bottom: 30px;
}
.content-box {
background-color: white;
padding: 20px;
border-radius: 8px;
box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
margin-bottom: 20px;
}
.footer-section {
background-color: #343a40;
color: white;
padding: 20px 0;
text-align: center;
margin-top: 50px;
}
</style>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container-fluid">
<a class="navbar-brand" href="#">내 사이트</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">홈</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">서비스</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">포트폴리오</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">문의</a>
</li>
</ul>
</div>
</div>
</nav>
<header class="header-section">
<div class="container">
<h1 class="display-4">CSS 프레임워크를 활용한 빠른 개발</h1>
<p class="lead">Bootstrap의 그리드와 컴포넌트를 사용하여 반응형 웹 페이지를 만들어봅시다.</p>
<a href="#" class="btn btn-primary btn-lg mt-3">더 알아보기</a>
</div>
</header>
<main class="container">
<div class="row">
<div class="col-12 col-md-8">
<div class="content-box">
<h3>메인 콘텐츠 제목</h3>
<p>이 영역은 주된 내용이 들어가는 공간입니다. Bootstrap의 반응형 그리드 시스템을 사용하여 다양한 화면 크기에 맞춰 레이아웃이 자동으로 조절됩니다. `col-12`는 모든 화면에서 12열(꽉 채움)을 의미하며, `col-md-8`은 중간(md) 화면 크기 이상에서 8열을 차지하도록 합니다.</p>
<p>화면 크기를 조절하며 어떻게 레이아웃이 변화하는지 확인해보세요. 작은 화면에서는 사이드바가 아래로 내려올 것입니다.</p>
<button class="btn btn-info">정보 버튼</button>
</div>
<div class="row">
<div class="col-12 col-sm-6">
<div class="content-box">
<h5>서브 섹션 1</h5>
<p>여기서는 `row` 안에 다시 `col-12 col-sm-6`을 사용하여 2개의 컬럼을 만들었습니다. 이는 중첩된 그리드 사용 예시입니다.</p>
</div>
</div>
<div class="col-12 col-sm-6">
<div class="content-box">
<h5>서브 섹션 2</h5>
<p>모바일 화면에서는 이 두 컬럼이 세로로 쌓이고, 작은 태블릿 화면 이상에서는 가로로 배치됩니다.</p>
</div>
</div>
</div>
</div>
<div class="col-12 col-md-4">
<div class="content-box">
<h4>사이드바</h4>
<ul class="list-group">
<li class="list-group-item">항목 1</li>
<li class="list-group-item">항목 2</li>
<li class="list-group-item">항목 3</li>
</ul>
</div>
<div class="content-box">
<h4>최신 소식</h4>
<p>프레임워크를 사용하면 디자인과 기능 구현에 드는 노력을 크게 줄일 수 있습니다.</p>
<span class="badge bg-primary">새로운 기능</span>
</div>
</div>
</div>
</main>
<footer class="footer-section">
<p>© 2025 CSS 프레임워크 실습. All rights reserved.</p>
</footer>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
</body>
</html>이 실습의 기본 Bootstrap 5 breakpoint는 sm 576px, md 768px, lg 992px입니다. 메인/사이드바 비율 8:4는 768px부터, 안쪽 두 서브 섹션 비율 6:6은 576px부터, navbar-expand-lg의 메뉴 펼침은 992px부터 적용됩니다. 따라서 800px에서는 메인과 사이드바가 가로여도 메뉴는 접힌 상태일 수 있습니다. 기기 이름보다 각 클래스의 CSS 화면 폭 조건을 따로 확인하세요.
- Live Server를 통해
framework_layout.html파일을 열어 보세요. - 페이지가 기본적인 내비게이션 바, 헤더, 콘텐츠, 사이드바, 푸터로 구성된 것을 확인합니다.
- 브라우저 창의 너비를 조절해 보세요.
- 큰 화면(
md이상)에서는 메인 콘텐츠가 8열, 사이드바가 4열로 나란히 배치되는 것을 확인합니다. - 작은 화면(
md미만, 즉 모바일/태블릿)에서는 메인 콘텐츠와 사이드바가 각각 12열을 차지하며 세로로 쌓이는 것을 확인합니다. - 내비게이션 바의 햄버거 메뉴 버튼을 클릭하여 모바일 환경에서 메뉴가 토글되는 것을 확인합니다. (JavaScript가 필요)
- 큰 화면(
메뉴 버튼의 data-bs-target="#navbarNav"는 같은 id의 collapse 영역을 찾습니다. bundle 요청이 실패하거나 script를 제거하면 그리드 CSS는 유지되어도 접힌 메뉴 토글은 동작하지 않습니다. 버튼을 눌렀을 때 aria-expanded와 메뉴 표시가 함께 바뀌는지 확인하세요. 정보 버튼에는 별도 이벤트가 없어 알림이 나오는 기능까지 제공된 것은 아닙니다.
혼자 열 비율을 설계해 보기
기본 768px 경계는 유지하면서 메인을 9열, 사이드바를 3열로 바꾸세요. 575px, 600px, 800px, 1000px에서 바깥 두 영역·안쪽 서브 섹션·메뉴의 가로/세로 또는 펼침 상태를 먼저 표로 적고 실제 화면에서 비교합니다. HTML의 DOM 순서는 유지합니다.
클래스와 서로 다른 경계 풀이
메인을 col-12 col-md-9, 사이드바를 col-12 col-md-3으로 바꾸면 9+3=12입니다. 575px에서는 바깥/안쪽 모두 세로, 600px에서는 바깥 세로·안쪽 6:6 가로입니다. 800px에서는 바깥 9:3과 안쪽 6:6이 가로지만 메뉴는 lg 미만이라 접힙니다. 1000px에서는 메뉴도 기본 펼침 상태입니다. 접힌 상태에서 사용자가 버튼으로 펼쳤는지는 별도 상호작용 상태입니다.
이 실습에서는 기본 클래스의 효과와 JavaScript에 맡긴 동작을 구별하며 반응형 페이지를 구성했습니다.
이번 장에서는 웹 개발 속도와 효율성을 크게 향상시키는 CSS 프레임워크에 대해 학습했습니다.
- CSS 프레임워크의 개념과 필요성을 이해하고, 미리 정의된 스타일과 컴포넌트가 어떻게 개발 생산성을 높이는지 알아보았습니다.
- 가장 대표적인 두 가지 유형의 프레임워크인 Bootstrap(컴포넌트 기반)과 Tailwind CSS(유틸리티 우선)의 특징, 장단점을 비교 분석했습니다.
- Bootstrap은 빠르고 일관된 UI 컴포넌트를 제공하여 초보자나 빠른 프로토타입 제작에 유리합니다.
- Tailwind CSS는 유틸리티 클래스를 조합하여 높은 자유도와 최적화된 CSS 번들 크기를 제공하며, 독창적인 디자인 시스템 구축에 적합합니다.
- 실습을 통해 Bootstrap의 그리드 시스템과 컴포넌트를 활용하여 간단한 반응형 웹 페이지 레이아웃을 구성해 보았습니다.
CSS 프레임워크는 반복되는 스타일 작업을 줄이고 레이아웃과 컴포넌트 구성을 빠르게 시작할 수 있게 돕습니다.
프로젝트의 특성과 팀의 요구사항에 맞춰 적절한 프레임워크를 선택하고 활용함으로써, 더욱 빠르고 견고한 웹사이트를 구축할 수 있을 것입니다.
4장에서는 CSS 동적 효과, 변수와 계산식, CSS 방법론, 전처리기, 프레임워크 활용을 다뤘습니다.