Bootstrap을 사용하기 위해서는 먼저 공식 웹사이트에서 프레임워크를 다운로드해야 한다. 주로 사용하는 파일은 dist/css 디렉터리 내의 bootstrap.css와 압축된 버전인 bootstrap.min.css이다. 이 파일들은 레이아웃, 컴포넌트, 반응형 디자인 등을 위한 핵심 스타일을 제공한다.
HTML 문서의 <head> 태그 내에 다음과 같이 CSS 파일을 연결한다:
<link rel="stylesheet" href="./bootstrap-3.4.1/dist/css/bootstrap.min.css">
모바일 기기 호환성을 위해 아래와 같은 viewport 메타 태그도 반드시 포함시켜야 한다:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
레이아웃 컨테이너
Bootstrap에서는 콘텐츠 배치를 위한 두 가지 주요 컨테이너 클래스를 제공한다:
- .container: 화면 크기에 따라 고정된 너비를 가지며, 중앙 정렬되는 반응형 컨테이너다.
- .container-fluid: 뷰포트 전체 폭(100%)을 차지하는 유동적인 컨테이너다.
<div class="container">
<h1>고정 너비 컨테이너</h1>
</div>
<div class="container-fluid">
<h1>전체 너비 컨테이너</h1>
</div>
그리드 시스템
Bootstrap의 그리드는 최대 12열로 구성되며, 다양한 화면 크기에 따라 자동 조정된다. 각 행은 .row로 감싸고, 열은 .col-* 클래스로 정의한다. 미디어 쿼리에 따라 다음과 같은 브레이크포인트가 존재한다:
- lg: 데스크톱 (≥1200px)
- md: 태블릿 (≥992px)
- sm: 작은 태블릿 (≥768px)
- xs: 모바일 폰 (<768px)
<div class="container">
<div class="row">
<div class="col-md-6 col-sm-12">왼쪽 섹션</div>
<div class="col-md-6 col-sm-12">오른쪽 섹션</div>
</div>
</div>
텍스트 및 요소 스타일링
부트스트랩은 텍스트 강조, 정렬, 색상 등 다양한 유틸리티 클래스를 제공한다.
텍스트 강조
<p class="lead">강조된 본문 문단</p>
<p><small>보조 설명 텍스트</small></p>
<p><strong>굵게</strong>, <em>기울임</em>, <s>취소선</s></p>
텍스트 색상 및 정렬
<p class="text-primary">주요 정보 색상</p>
<p class="text-success">성공 상태</p>
<p class="text-danger">오류 메시지</p>
<p class="text-center">가운데 정렬</p>
<p class="text-right">오른쪽 정렬</p>
테이블 디자인
반응형 및 스타일링된 테이블을 쉽게 구현할 수 있다.
<div class="table-responsive">
<table class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th>ID</th>
<th>이름</th>
<th>나이</th>
</tr>
</thead>
<tbody>
<tr class="success">
<td>1</td>
<td>홍길동</td>
<td>25</td>
</tr>
</tbody>
</table>
</div>
폼 요소
입력 필드는 자동으로 일관된 스타일을 가지며, .form-group으로 감싸면 적절한 마진과 레이블 배치가 가능하다.
<form>
<div class="form-group">
<label for="email">이메일</label>
<input type="email" class="form-control" id="email" placeholder="이메일 입력">
</div>
<div class="form-group">
<label for="password">비밀번호</label>
<input type="password" class="form-control" id="password" placeholder="비밀번호 입력">
</div>
<button type="submit" class="btn btn-primary">제출</button>
</form>
버튼 스타일
다양한 컨텍스트에 맞는 버튼 스타일이 제공된다:
<button class="btn btn-default">기본</button>
<button class="btn btn-success">완료</button>
<button class="btn btn-warning">경고</button>
<button class="btn btn-danger">삭제</button>
<button class="btn btn-link">링크처럼</button>
드롭다운 메뉴
클릭 시 목록을 표시하는 드롭다운 메뉴 구성 예시:
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" data-toggle="dropdown">
카테고리 <span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a href="#">웹 개발</a></li>
<li class="divider"></li>
<li><a href="#">데이터 분석</a></li>
</ul>
</div>
사용자 정의 확장
기본 제공 스타일 외에 직접 커스텀 스타일을 추가할 수 있다. 별도의 custom.css 파일을 생성하여 Bootstrap 이후에 로드하면 된다. 예를 들어, 새로운 버튼 클래스를 정의할 수 있다:
.btn-custom {
background-color: #5c4084;
color: white;
border-radius: 8px;
}
HTML에서 <button class="btn btn-custom">커스텀 버튼</button>처럼 사용 가능하다.
아이콘 폰트 교체
기본 Glyphicons 대신 IcoMoon이나 Font Awesome 같은 외부 아이콘 라이브러리를 사용할 수 있다. 다운로드한 폰트 파일을 fonts/ 폴더에 넣고, CSS에 @font-face로 선언한 후, 의사 요소(::before)를 이용해 적용한다:
@font-face {
font-family: 'MyIcon';
src: url('../fonts/myicon.woff') format('woff');
}
.icon-home::before {
font-family: 'MyIcon';
content: '\e901';
}
실제 웹사이트 구조 예시
전체 페이지 기본 골격:
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>쇼핑몰 사이트</title>
<link rel="icon" href="favicon.ico" type="image/x-icon" />
<link rel="stylesheet" href="css/bootstrap.min.css" />
<link rel="stylesheet" href="css/custom.css" />
<script src="js/jquery-3.6.0.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</head>
<body>
<!-- 네비게이션 바 -->
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">로고</a>
</div>
</div>
</nav>
<!-- 캐러셀 -->
<div id="myCarousel" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#myCarousel" data-slide-to="0" class="active"></li>
</ol>
<div class="carousel-inner">
<div class="item active">
<img src="slide1.jpg" alt="슬라이드">
</div>
</div>
</div>
<!-- 스크롤 애니메이션 예시 -->
<script>
document.querySelector('a[href="#about"]').addEventListener('click', function(e) {
e.preventDefault();
const target = document.querySelector('#about');
window.scrollTo({
top: target.offsetTop,
behavior: 'smooth'
});
});
</script>
</body>
</html>