본문 바로가기
Study/CSS

CSS 기초 강의 10편: CSS 프레임워크를 활용한 빠른 웹 페이지 제작

by wawManager 2024. 11. 25.
728x90

1. CSS 프레임워크란?

CSS 프레임워크는 웹 디자인에 필요한 스타일과 레이아웃 기능을 사전 정의하여 제공하는 도구입니다. 이를 활용하면 공통 스타일을 일일이 작성하지 않아도 되므로 개발 시간을 크게 줄일 수 있습니다. 주요 CSS 프레임워크로는 Bootstrap, Bulma, Tailwind CSS 등이 있으며, 이번 강의에서는 가장 널리 쓰이는 Bootstrap을 중심으로 설명하겠습니다.


2. Bootstrap 시작하기

Bootstrap은 HTML, CSS, JavaScript로 구성된 반응형 웹 디자인 프레임워크로, 웹 페이지의 레이아웃과 디자인을 빠르게 구현할 수 있습니다.

Bootstrap CDN 연결

Bootstrap은 CDN(Content Delivery Network)을 통해 쉽게 연결할 수 있습니다. HTML 파일의 <head> 태그에 다음 코드를 추가하여 시작합니다.

<!DOCTYPE html>
<html lang="ko">
<head>
    <title>Bootstrap 예제</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">
</head>
<body>
    <!-- Bootstrap 사용 -->
</body>
</html>

이제 Bootstrap 클래스와 컴포넌트를 사용할 준비가 되었습니다.


3. Bootstrap 그리드 시스템

Bootstrap은 12열 그리드 시스템을 사용하여 다양한 레이아웃을 유연하게 구성할 수 있습니다. 화면 크기에 따라 레이아웃이 자동으로 변경되어 반응형 디자인이 용이합니다.

기본 그리드 구성

Bootstrap의 그리드 시스템은 container, row, col 클래스를 사용합니다.

<div class="container">
    <div class="row">
        <div class="col">Column 1</div>
        <div class="col">Column 2</div>
        <div class="col">Column 3</div>
    </div>
</div>

그리드 크기 지정

열(col)에 숫자를 지정하여 특정 비율만큼 넓이를 차지하게 할 수 있습니다.

<div class="container">
    <div class="row">
        <div class="col-4">Column 1</div> <!-- 4/12 너비 -->
        <div class="col-8">Column 2</div> <!-- 8/12 너비 -->
    </div>
</div>

4. Bootstrap 컴포넌트

Bootstrap은 버튼, 카드, 내비게이션 바 등 다양한 UI 컴포넌트를 제공합니다. 클래스만 추가하면 미리 정의된 스타일이 적용되어 웹 페이지 제작을 빠르게 할 수 있습니다.

1) 버튼

버튼은 btn 클래스를 사용하며, 색상과 스타일은 btn-primary, btn-secondary와 같은 추가 클래스로 지정합니다.

<button class="btn btn-primary">Primary Button</button>
<button class="btn btn-secondary">Secondary Button</button>

2) 카드

카드는 정보를 표시하는 데 유용한 컴포넌트로, card 클래스를 사용하여 쉽게 구성할 수 있습니다.

<div class="card" style="width: 18rem;">
    <img src="image.jpg" class="card-img-top" alt="...">
    <div class="card-body">
        <h5 class="card-title">Card Title</h5>
        <p class="card-text">Some example text.</p>
        <a href="#" class="btn btn-primary">Go somewhere</a>
    </div>
</div>

3) 내비게이션 바

내비게이션 바는 페이지의 메뉴를 구성할 때 사용하며, navbar 클래스를 사용합니다.

<nav class="navbar navbar-expand-lg navbar-light bg-light">
    <a class="navbar-brand" href="#">Navbar</a>
    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
        <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarNav">
        <ul class="navbar-nav">
            <li class="nav-item">
                <a class="nav-link active" href="#">Home</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">About</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Contact</a>
            </li>
        </ul>
    </div>
</nav>

5. Bootstrap를 활용한 웹 페이지 예제

Bootstrap의 그리드 시스템과 컴포넌트를 사용하여 간단한 반응형 웹 페이지를 만들어보겠습니다.

<!DOCTYPE html>
<html lang="ko">
<head>
    <title>Bootstrap 예제 페이지</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">
</head>
<body>
    <!-- 내비게이션 바 -->
    <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
        <a class="navbar-brand" href="#">My Site</a>
        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
            <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" href="#">Home</a></li>
                <li class="nav-item"><a class="nav-link" href="#">About</a></li>
                <li class="nav-item"><a class="nav-link" href="#">Contact</a></li>
            </ul>
        </div>
    </nav>

    <!-- 메인 컨텐츠 -->
    <div class="container mt-5">
        <div class="row">
            <div class="col-md-4">
                <div class="card">
                    <img src="https://via.placeholder.com/150" class="card-img-top" alt="...">
                    <div class="card-body">
                        <h5 class="card-title">Card Title</h5>
                        <p class="card-text">This is an example card using Bootstrap.</p>
                        <a href="#" class="btn btn-primary">Read More</a>
                    </div>
                </div>
            </div>
            <div class="col-md-4">
                <div class="card">
                    <img src="https://via.placeholder.com/150" class="card-img-top" alt="...">
                    <div class="card-body">
                        <h5 class="card-title">Card Title</h5>
                        <p class="card-text">This is an example card using Bootstrap.</p>
                        <a href="#" class="btn btn-primary">Read More</a>
                    </div>
                </div>
            </div>
            <div class="col-md-4">
                <div class="card">
                    <img src="https://via.placeholder.com/150" class="card-img-top" alt="...">
                    <div class="card-body">
                        <h5 class="card-title">Card Title</h5>
                        <p class="card-text">This is an example card using Bootstrap.</p>
                        <a href="#" class="btn btn-primary">Read More</a>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <!-- Bootstrap JavaScript (optional) -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

코드 설명

  • 내비게이션 바: navbar 클래스를 사용하여 반응형으로 메뉴를 구성했습니다.
  • 카드 레이아웃: row와 col-md-4 클래스를 사용해 3개의 카드를 가로로 배치했으며, 각 카드에 버튼을 추가하여 일관된 스타일을 적용했습니다.

6. CSS 프레임워크 사용의 장단점

장점

  • 빠른 개발: 미리 정의된 스타일을 사용해 빠르게 레이아웃을 구성할 수 있습니다.
  • 반응형 디자인: 기본적으로 반응형이 적용되어 다양한 기기에서도 적응하는 웹 페이지 제작이 용이합니다.
  • 일관성: 스타일과 레이아웃이 통일된 디자인을 유지할 수 있습니다.

단점

  • 제한된 커스터마이징: 기본 스타일이 적용되어 있어 세밀한 디자인 조정이 어렵습니다.
  • 불필요한 코드: 프로젝트에 필요하지 않은 스타일과 컴포넌트가 포함될 수 있어 불필요한 코드가 많아지고, 페이지 로딩 속도가 느려질 수 있습니다.

7. CSS 프레임워크 사용 시 유의사항

1) 필요한 컴포넌트만 사용하기

Bootstrap과 같은 CSS 프레임워크는 다양한 컴포넌트를 제공하지만, 모든 기능을 사용할 필요는 없습니다. 프로젝트에 필요한 컴포넌트만 선택적으로 사용하거나, 필요한 부분만 커스터마이징하여 불필요한 로딩 시간을 줄일 수 있습니다.

2) 커스터마이징

기본 스타일이 프로젝트 요구사항에 맞지 않는 경우, CSS 재정의를 통해 개별 스타일을 커스터마이징하는 방법이 있습니다. Bootstrap의 경우, custom.css 파일을 추가하여 필요에 따라 스타일을 변경하거나 덮어쓰는 것이 일반적입니다.

/* custom.css */
.btn-primary {
    background-color: #5A5A5A; /* 기본 Bootstrap 색상을 사용자 정의 색상으로 변경 */
    border-color: #5A5A5A;
}

3) Bootstrap의 Sass 버전 사용하기

Bootstrap은 Sass로도 제공되므로, 필요한 컴포넌트만 불러오고 변수를 직접 수정하여 프로젝트에 최적화된 스타일을 만들 수 있습니다. Sass 버전에서는 특정 스타일과 기능만 가져올 수 있어 불필요한 코드 로드를 줄일 수 있습니다.


요약

이번 강의에서는 CSS 프레임워크의 개념과 대표적인 프레임워크인 Bootstrap의 기본 사용법을 배웠습니다. CSS 프레임워크를 활용하면 일관성 있고 반응형 웹 디자인을 빠르게 구성할 수 있습니다. 그러나 프로젝트에 적합한 커스터마이징과 필요한 기능만 선택적으로 사용하는 것이 중요합니다. 다음 강의에서는 CSS 고급 기법과 트릭을 통해 CSS를 활용한 더욱 다양한 레이아웃과 스타일링 방법을 소개하겠습니다.

 

728x90