ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • flex box layout (display : flex ;)
    웹 프로그래밍/FE(Front-End) 2021. 7. 8. 18:00

    우리는 보여지는 요소의 위치를 내가 원하는대로 조정하여 반응형 웹 디자인을 구현하기 위해 position속성에 값을 주어 left, right, bottom, right를 주거나 이렇게 조정하여도 원하는 결과를 얻지 못하면 float 속성을 이용한다.

     

    하지만, float속성이 만들어진 이유는 반응형 웹 디자인을 위해서가 아니라 마치 요소를 떠 있게 하는 것처럼 하여 그 주변을 다른 요소로 감싸는 포지셔닝(positing)을 위해서이다.

    즉, 우리가 원하는 레이아웃(layout)으로 요소를 배치하기 위해 float속성을 마주잡이로 사용하는 것은 어긋난 행동이다.

     

    하지만, flex box가 나오기 이전에는 어쩔 수 없이 position, float, table 등과 같은 속성을 사용하여 레이아웃을 구성하게 되었다.

    그렇지만 flex box가 나온 현 시점에는 flex box의 이점을 잘 활용하여 레이아웃을 원하는대로 구성하면 좋을 것같다.

     

    <참고 영상>

    https://www.youtube.com/watch?v=7neASrWEFEM 

     

     

    먼저, 플레스 박스 레이아웃(flex box layout)이란 그리드 레이아웃을 기본으로 하여 플렉스 박스를 원하는 위치에 배치하는 것이다.

    플렉스 박스를 이용하면 여유 공간에 따라 너비나 높이, 위치를 자유롭게 변경할 수 있는 장점이 있다.

     

     

    그러면 flex box를 이용하려면 어떻게 해야할까?

    먼저 display 속성에 속성값을 주어 플렉스 컨테이너를 지정하는 것이다.

    flex box로 설정하기 위한 속성값은 flex와 inline-flex가 있다.

    속성 값 설명
    flex 플렉스 박스를 박스 레벨 요소로 정의
    inline-flex 플렉스 박스를 인라인 레벨 요소로 정의

    display 속성은 flex box로 지정하고 싶은 각가의 요소에 주는 것이 아니라 해당 요소(웹 컨텐츠)들을 감싸는 부모 요소를 만들어 그 부모 요소에 display 속성값을 주어야한다.

    즉, 아래와 같이 코드를 짜야한다.

    <style>
        #container {
            diplay: flex;
        }
        
    </stlye>
    
    <div id="container">
        <div></div>
        <div></div>
    </div>

     

     

    이제 flex box를 지정하는 법은 알았다.

    그럼 조금 더 원하는대로 box위치를 지정할 수 있게 해주는 속성에 대해 알아보자.

    1) flex-direction 속성

    felx-direction 속성은 플렉스 항목을 배치할 방향을 알려주는 속성이다.

    속성값에는 row, row-inverse, column, column-reverse가 있다.

    따로 속성값을 주지 않는다면 기본값은 row이다.

    속성 값 설명
    row 주축을 가로로 교차축을 세로로 지정.
    플렉스 항목은 주축 시작점에서 끝점으로(왼쪽에서 오른쪽으로)배치된다.
    row-inverse 주축을 가로로 교차축을 세로로 지정.
    플렉스 항목은 주축 끝점에서 시작점으로(오른쪽에서 왼쪽으로)배치된다.
    column 주축을 세로로 교차축을 가로로 지정.
    플렉스 항목은 주축 시작점에서 끝점으로(위쪽에서 아래쪽으로)배치된다.
    column-reverse 주축을 세로로 교차축을 가로로 지정.
    플렉스 항목은 주축 끝점에서 시작점으로(아래쪽에서 위쪽으로)배치된다.

     

     

    2) flex-wrap 속성

    flex-wrap 속성은 플렉스 항목을 여러 줄에 걸쳐 표시하게 해주는 속성이다.

    기본적으로 플렉스 항목들은 주축 방향을 따라 한 줄로 배치되는데 flex-wrap 속성에 속성값을 주면 다르게 배치할 수 있다.

    속성값은 아래와 같다.

    속성 값 설명
    no-wrap 플렉스 항목들을 한줄에 표시. (기본값)
    wrap 플렉스 항목들은 여러 줄에 표시.
    wrap-reverse 플렉스 항목을 여러 줄에 표시하되 기존 방향과 반대로 표시

     

    flex-wrap속성에 3가지 속성값을 준 결과를 보면 아래의 사진과 같다.

    flex-wrap 속성값이 no-wrap이면 flex box의 width값이 한줄로 배치 되기 위해 flex container의 width에 맞게 자동으로 줄어든 것을 볼 수 있다.

     

     

    3) flex-flow 속성

    flex-flow 속성은 위에서 본 flex-direction속성값과 flex-wrap속성값을 한꺼번에 지정할 수 있는 속성이다.

    felx-flow: <플렉스 방향> <플렉스 줄 배치>

    이때, 플렉스 방향(flex-direction 속성값)과 플렉스 줄 배치(flex-wrap 속성값)은 공백 문자로 구분하여 표시한다.

     

     

     

    4) order 속성

    order 속성은 flex container가 아닌 각각의 flex box에 속성값을 주어 배치 순서를 바꿀 수 있다.

    코드와 실행 결과를 보면 아래와 같다.

    <style>
        #container-2{
                display: flex;
        }
            
        #box1 {
            order: 2;
        }
    
        #box2 {
            order: 3;
        }
    
        #box3 {
            order: 1;
        }
    </style>
    
    <div id="container">
        <div id="box1"><h2>1</h2></div>
        <div id="box2"><h2>2</h2></div>
        <div id="box3"><h2>3</h2></div>
    </div>

     

    '웹 프로그래밍 > FE(Front-End)' 카테고리의 다른 글

    JSON이란?  (0) 2021.07.05
    브라우저 객체(BOM)  (0) 2021.07.04
    form 태그 파헤치기  (0) 2021.07.01
    [에러 수정] Uncaught TypeError: $.ajax is not a function  (0) 2021.06.29
    JQuery 접해보기  (0) 2021.06.27

    댓글

Designed by Tistory.