Minwoo Dev.

[HTML/CSS] Flexbox 와 justify-content, align-items, div 정렬하기 본문

Web

[HTML/CSS] Flexbox 와 justify-content, align-items, div 정렬하기

itisminu 2024. 1. 24. 12:40
728x90
반응형
SMALL

이 게시물은 Udemy 의 [The Web Developer 부트캠프 2024] 를 보고 개인적으로 정리한 게시글입니다.

 

 

CSS에서 많이 사용하는 div를 정렬하기 위해서 사용하는 방법들 중 하나는 flexbox, display 속성의 flex를 사용하는 것이다.

이번에는 display:flex와 함께 사용되는 justify-content, align-items 에 대해서 알아보자.

 

우선, display의 flex를 사용한 상태에서 시작하겠다.

 

index.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Flexbox</title>
    <link rel="stylesheet" href="app.css">
</head>

<body>
    <h1>Let's Play With Flexbox</h1>

    <section id="container">
        <div style="background-color: #80ffdb;"></div>
        <div style="background-color:#64dfdf;"></div>
        <div style="background-color:#48bfe3;"></div>
        <div style="background-color:#5390d9;"></div>
        <div style="background-color:#6930c3;"></div>
    </section>

</body>

</html>

 

CSS를 연결해두었다. 그리고 5개의 div를 만들어 색상을 다르게 지정하였다.

 

app.css

body {
    font-family: 'Open Sans', sans-serif;
}

h1 {
    text-align: center;
}

#container {
    background-color: #003049;
    width: 90%;
    height: 500px;
    margin: 0 auto;
    border: 5px solid #003049;
}

#container div {
    width: 200px;
    height: 200px;
}

 

 

위처럼 코드를 작성한다면 아래와 같이 화면이 나타날 것이다.

 

div 박스가 아래로 더 내려가서 잘린 것이 보인다.

 

이제 위 코드에 display:flex를 추가하겠다.

 

container 안에 5개의 div가 가로로 들어갔다.

그 이유는 기본적으로 display:flex를 사용하면 flex-direction은 row이기 때문이다.

 

임의로 flex-direction을 colum으로 바꾼다면 세로로 정렬된다.

 

하지만 display:flex를 실행하기 전과는 다르게 5개의 div가 container에 딱 맞게 사이즈가 조정되어 들어갔다.

우리가 css에서 설정한 container 안의 div의 높이(height)는 200px인데, 그것보다 작은 사이즈가 적용된 모습이다.

 

display:flex를 사용하면 이처럼 상위 div에 사이즈에 맞게 자동으로 조절하는 장점이 있다.

 

다시 flex-direction:row으로 돌아가서, justify-content에 대해 설정해보겠다.

 

justify-content

#container {
    background-color: #003049;
    width: 90%;
    height: 500px;
    margin: 0 auto;
    border: 5px solid #003049;
    display: flex;
    flex-direction: row;
    justify-content: flex-end;
}

 

justfy-content:flex-end를 설정하기 전과는 다르게, 오른쪽 면에 붙은 것을 확인할 수 있다.

justify-content는 우리가 설정한 display:flex의 flex-direction에 따라서 달라진다.

row면 가로방향의 기준을 설정하는 것이고, colum이면 세로방향의 기준을 설정하는 것이라고 말할 수 있겠다.

"주축"의 방향을 바꾸어 정렬하는 것이다.

 

 

위 사진을 보면 main axis라고 적혀있는 방향이 있다. 

justify-content는 main axis, 즉 주축에 대하여 설정해주는 속성이다.

 

  • flex-start : 기본값, 주축의 시작점으로 기준축을 설정한다. 시작점을 기준으로 정렬한다.
  • flex-end : 주축의 끝점을 기준으로 설정한다.

 

flex-direction 이 colum일 때의 상황들도 첨부하겠다.

 

 

왼쪽 사진이 justify-content:flex-start, 오른쪽 사진이 justify-content:flex-end의 결과이다.

colum은 주축이 세로방향이기 때문에 위와 같은 결과가 나온다.

 

 

 

align-items

 

display: flex, flex-direction:row,  justify-content:flex-start로 두고 시작하겠다. 

 

위 사진에서 align-items는 주축이 아닌, cross axis, 즉 교차죽에 대하여 값을 정해주는 속성이다.

 

 

align-items: flex-end를 적용하면,

 

flex-direction이 row인데, align-items를 적용하자 교차축인 세로를 기준으로 바닥에 붙었다.

 

이처럼 align-items는 교차축에 대하여 기준을 설정한다.

 

 

colum 방향에 대한 결과도 첨부하겠다.

 

 

 

왼쪽 

#container {
    background-color: #003049;
    width: 90%;
    height: 800px;
    margin: 0 auto;
    border: 5px solid #003049;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: flex-start;
}

 

오른쪽

#container {
    background-color: #003049;
    width: 90%;
    height: 800px;
    margin: 0 auto;
    border: 5px solid #003049;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: flex-end;
}

 

 

 

728x90
반응형
LIST