부트스트랩(Bootstrap)은 웹 개발에서 많이 사용되는 오픈 소스 CSS 프레임워크로, 주로 반응형 웹 디자인을 쉽게 구현하기 위해 사용된다. HTML, CSS, JavaScript로 이루어져 있으며, 다양한 기본적인 스타일과 구성 요소들이 이미 만들어져 있어 빠르게 웹 페이지를 만들 수 있도록 돕는다.
반응형 웹 디자인
부트스트랩은 기본적으로 모바일 우선(Mobile First) 접근 방식을 채택하고 있다. 즉, 모바일 화면에 최적화된 스타일이 먼저 적용되고, 화면 크기가 커질수록 점차 데스크탑에 맞게 스타일이 변경된다. 이를 위해 다양한 미디어 쿼리와 그리드 시스템을 활용한다.
그리드 시스템
부트스트랩의 그리드 시스템은 12개의 열(column)로 구성된다. 이 열을 적절히 나누어 레이아웃을 만들 수 있다. 예를 들어, 3개의 항목을 동일한 너비로 배치하려면 각 항목을 4개의 열씩 나누면 된다. 다양한 화면 크기에 맞춰 레이아웃을 쉽게 조정할 수 있다.
다양한 UI 구성 요소
부트스트랩은 버튼, 네비게이션 바, 카드, 모달, 폼, 알림 등 다양한 UI 구성 요소들을 기본적으로 제공한다. 이 요소들은 미리 디자인된 상태로 제공되기 때문에, 개발자는 복잡한 스타일을 작성하지 않고도 빠르게 UI를 구현할 수 있다.
자바스크립트 플러그인
부트스트랩은 jQuery와 결합된 다양한 JavaScript 플러그인도 제공한다. 예를 들어, 모달 창, 툴팁, 팝오버, 슬라이더 등과 같은 인터랙티브한 기능을 손쉽게 추가할 수 있다.
기본적인 스타일링
부트스트랩은 다양한 기본 스타일을 제공한다. 기본 폰트, 버튼 스타일, 링크 스타일, 텍스트 정렬 등 UI 구성 요소를 작성할 때 미리 설정된 스타일이 제공된다. 이를 통해 디자인 작업을 빠르게 시작할 수 있다.
부트스트랩의 그리드 시스템은 기본적으로 12개의 열로 구성되며, 화면 크기에 따라 다른 클래스(col-sm-, col-md-, col-lg-, col-xl-)를 사용하여 반응형 레이아웃을 만든다.
<div class="container">
<div class="row">
<div class="col-4">컬럼 1</div>
<div class="col-4">컬럼 2</div>
<div class="col-4">컬럼 3</div>
</div>
</div>
이 예시에서는 col-4를 사용하여 12개의 열을 3등분하여 4씩 나누었다. 이 방식으로 다양한 화면 크기에서 레이아웃을 조정할 수 있다.
부트스트랩은 여러 가지 버튼 스타일을 제공한다. 클래스만 추가하면 기본적인 버튼 디자인을 손쉽게 사용할 수 있다.
<button class="btn btn-primary">Primary 버튼</button>
<button class="btn btn-secondary">Secondary 버튼</button>
<button class="btn btn-success">Success 버튼</button>
부트스트랩에서는 btn 클래스와 함께 다양한 색상 클래스를 사용해 버튼을 스타일링할 수 있다.
부트스트랩은 다양한 네비게이션 스타일을 제공한다. navbar 클래스를 사용하여 네비게이션 바를 만들 수 있다.
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">브랜드</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-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">
<li class="nav-item active">
<a class="nav-link" href="#">홈</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">기타</a>
</li>
</ul>
</div>
</nav>
부트스트랩은 모달 창을 쉽게 구현할 수 있는 클래스와 JavaScript 플러그인을 제공한다.
<!-- 버튼 클릭 시 모달 열기 -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal">
모달 열기
</button>
<!-- 모달 구조 -->
<div class="modal" id="myModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">모달 제목</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
모달 내용이 여기에 들어갑니다.
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">닫기</button>
<button type="button" class="btn btn-primary">저장</button>
</div>
</div>
</div>
</div>
카드는 콘텐츠를 그룹화하는 데 유용한 UI 구성 요소로, 이미지, 텍스트 등을 카드 형식으로 스타일링할 수 있다.
<div class="card" style="width: 18rem;">
<img src="..." class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">카드 제목</h5>
<p class="card-text">카드 본문 내용</p>
<a href="#" class="btn btn-primary">버튼</a>
</div>
</div>
<!-- CSS -->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
<!-- JS -->
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.3/dist/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>