모래알 반응형웹

Bootstrap 4 (부트스트랩), 반응형 레이아웃, 격자형 레이아웃시스템 (1/2) 본문

부트스트랩

Bootstrap 4 (부트스트랩), 반응형 레이아웃, 격자형 레이아웃시스템 (1/2)

전상하 2018. 3. 29. 10:30


부트스트랩 (Bootstrap)은 화면의 너비를 12 분할(12 격자, Grid)하여 웹페이지를 만든다.


Bootstrap 3의 격자형 레이아웃 시스템(Grid Layout System)은 4 가지 화면 너비를 기준으로 반응하도록 정의되어 있었다.  768px 미만(스마트폰), 768px 이상(태블릿), 992px 이상(작은 화면의 데스크탑), 1200px이상(큰 화면의 데스크탑)에 따라 신축성있게 화면이 바뀌어 반응형이 가능하도록 했다.


Bootstrap 4부터는 이 격자형 레이아웃시스템이 더 정교하고 세밀하게 발전했다.

화면의 너비를 12 분할하는 것은 동일하지만 반응하는 화면의 기준너비는 4가지 에서 5가지로 세분화되었다.



Extra small
<576px
Small
576px
Medium
768px
Large
992px
Extra large
1200px
Max container width
실제 적용되는 너비

None (auto)

540px

720px

960px

1140px

Class prefix.col-.col-sm-.col-md-.col-lg-.col-xl-
# of columns12분할

Gutter width

30px (15px on each side of a column)
NestableYes
Column orderingYes

Max container width: 실제 컨텐츠가 담기는 최고 너비는 꼭 알아두는 것이 좋다.


부트스트랩에서는이미지의 경우 너비를 100%로 적용하는 것이 일반적이다. 이미지가 들어가는 영역의 너비에 꽉맞게 이미지를 설정하는 것이다. 이미지는 이미지가 실제 만들어진 너비보다 작거나 크게 보여질 경우 흐려지게 된다.


화면의 너비가 바뀌더라도 이미지를 선명하게 보여주기를 원한다면 Max container width에 맞게 이미지를 5개 만들어서 적용하면 된다. 이미지의 너비를 100%로 적용하지 않고 pixel수대로 지정하는 것이다.

<576px, 576px, 768px, 992px, 1200px의  실제 영역 너비에 맞게 이미지를 5개 만들어 적용하는 것이다.

각 영역에 이미지를 적용하는 것은 후에 따로 포스팅하겠다.


Grid Layout System 실제 적용

이제 Bootstrap 4의 격자형 레이아웃 시스템을 실제로 적용해보자.

부트스트랩의 레이아웃 시스템은 기본적으로 내용을 감싸는 container와 그 내부의 row(열) 안에서 작동한다.


<div class="container">

<div class="row">

......................

</div>

</div>

1. col- (<576px)

브라우저 너비 576 pixel 미만부터 적용되는 격자형 레이아웃 시스템이다. 전체 코드를 먼저 입력하고 서버에 올린 후 테스트해보자.


부트스트랩을 사용하기 위해서는 기본적으로 아래의 페이지 구조가 되어야 한다.

[참조] Bootstrap(부트스트랩) 시작, 필수 요소 (http://passauer1083.tistory.com/2)


<!DOCTYPE html> 

<html lang="ko"> 

  <head> 

<meta charset="utf-8"> 

<meta http-equiv="X-UA-Compatible" content="IE=edge"> 

<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> 


<title>Bootstrap Test</title> 


<!-- Bootstrap CSS -->

<link rel="stylesheet" href="bootstrap/dist/css/bootstrap.css"/>


  </head> 

  <body> 


     <div class="container">

         <div class="row">


             내용들어가는 부분


         </div>

      </div>



<!-- jQuery first, then Popper.js, then Bootstrap JS -->

<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js">  </script>

<script src="bootstrap/dist/js/bootstrap.js"></script>

  </body> 

</html>


다음과 같이 페이지를 만들어 보자.


<div class="container">

  <div class="row">

    <div class="col">

      1 of 3

    </div>

    <div class="col">

      2 of 3

    </div>

    <div class="col">

      3 of 3

    </div>

  </div>

</div>


이렇게 하면 576px 미만의 브라우저 너비부터 최대너비크기까지 3등분된다.

그러니까 어떤 브라우저 너비로 보던 모두 3등분되는 것이다.

(파일을 서버에 올린 후 브라우저 너비를 줄이고 늘여보면 어떤 상태인지 알 수 있다.)


Bootstrap 3의 경우 <div class="col"> 대신 <div class="col-xs-4">라고 했어야 했다.

Bootstrap 4에서는 숫자 명시없이 <div classs="col">의 갯수에 따라 자동 분할한다.

이를테면 아래와 같이 입력하면 2등분이 되는 것이다.


    <div class="col">

      1 of 2

    </div>

    <div class="col">

      2 of 2

    </div>


<div class="col">은 <div class="col-6">으로 입력할 수도 있다.

2. col-sm (576px)

col-sm은 브라우저 너비 576px 이상에 적용된다.


<div class="container">

  <div class="row">

    <div class="col-sm">

      1 of 3

    </div>

    <div class="col-sm">

      2 of 3

    </div>

    <div class="col-sm">

      3 of 3

    </div>

  </div>

</div>


화면 너비 576px 이상에서는 화면이 3등분 되지만 576px 미만에서는 3줄로 나타난다.


[576px 이상]

 col-sm (또는 col-sm-4)

 col-sm (또는 col-sm-4)

 col-sm (또는 col-sm-4)


[576px 미만]

col-sm (또는 col-sm-4)

 col-sm (또는 col-sm-4)

 col-sm (또는 col-sm-4)


3. col-md (768px)

col-md은 브라우저 너비 768px 이상에 적용된다.


<div class="container">

  <div class="row">

    <div class="col-md">

      1 of 3

    </div>

    <div class="col-md">

      2 of 3

    </div>

    <div class="col-md">

      3 of 3

    </div>

  </div>

</div>


화면 너비 768px 이상에서는 화면이 3등분 되지만 768px 미만에서는 3줄로 나타난다.


[768px 이상]

 col-sm (또는 col-sm-4)

 col-sm (또는 col-sm-4)

 col-sm (또는 col-sm-4)


[768px 미만]

col-sm (또는 col-sm-4)

 col-sm (또는 col-sm-4)

 col-sm (또는 col-sm-4)


4. col-lg (992px)

col-lg은 브라우저 너비 992px 이상에 적용된다.


5. col-xl (1200px)

col-xl은 브라우저 너비 1200px 이상에 적용된다.


768px 미만에서는 2등분, 768px이상에서는 3등분하고 싶으면?

부트스트랩의 격자레이아웃시스템은 화면의 너비에 따라 각각 다르게 분할할 수 있다.


<div class="container">

  <div class="row">

    <div class="col-6 col-md-4">

      1 of 3

    </div>

    <div class="col-6 col-md-4">

      2 of 3

    </div>

    <div class="col-6 col-md-4">

      3 of 3

    </div>

 </div>

</div>


Container 안에 여러 개의 row가 들어갈 수 있다.

<div class="container">

    <div class="row">

        <div class="col-md-4">

          1 of 3

        </div>

        <div class="col-md-4">

          2 of 3

        </div>

        <div class="col-md-4">

          3 of 3

        </div>

    </div>

    <div class="row">

        <div class="col-md-6">

          1 of 2

        </div>

        <div class="col-md-6">

          2 of 2

        </div>

    </div>

 </div> <!-- /.contaienr -->


 col-md-4

 col-md-4

 col-md-4

 col-md-6

 col-md-6


    

Comments