Computer >> 컴퓨터 >  >> 프로그래밍 >> CSS

CSS Flex를 활용한 컨테이너 좌우 정렬 구현 방법

CSS Flexbox는 요소를 유연하게 배치할 수 있는 강력한 레이아웃 도구입니다. 이 글에서는 display: flexjustify-content 속성을 조합하여 컨테이너 안의 요소를 왼쪽과 오른쪽 끝에 정렬하는 방법을 소개합니다.

기본 구문(Syntax)

CSS flex 속성의 기본 구문은 다음과 같습니다.

Selector {
   flex: /*value*/
}

아래 예제들을 통해 실제 적용 사례를 살펴보겠습니다.

예제 1: space-between으로 좌우 정렬하기

justify-content: space-between은 첫 번째 자식 요소를 컨테이너의 시작점(왼쪽)에, 마지막 자식 요소를 끝점(오른쪽)에 배치하고 나머지 공간을 균등하게 분배합니다. 두 개의 요소만 있으면 각각 왼쪽과 오른쪽에 정확히 붙게 됩니다.

<!DOCTYPE html>
<html>
   <head>
      <style>
         #container {
            display: flex;
            flex-direction: row;
            justify-content: space-between;
            margin: 2%;
            padding: 15%;
            align-self: center;
            background: url("https://images.unsplash.com/photo-1431440869543-efaf3388c585?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb 1.2.1&auto=format&fit=stretch&w=600&q=80");
            color: white;
         }
         div > div {
            border: 2px solid red;
         }
      </style>
   </head>
   <body>
      <div id="container">
         <div>Left</div>
         <div>Right</div>
      </div>
   </body>
</html>

위 코드를 실행하면 'Left' 박스는 컨테이너의 왼쪽 끝에, 'Right' 박스는 오른쪽 끝에 배치된 결과를 확인할 수 있습니다.

CSS Flex를 활용한 컨테이너 좌우 정렬 구현 방법

예제 2: column wrap으로 세로 방향 배치하기

Flexbox는 가로뿐 아니라 세로 방향 배치도 지원합니다. flex-flow: column wrap을 사용하면 요소들이 위에서 아래로 배치되다가 컨테이너 높이를 초과하면 자동으로 새로운 열로 넘어갑니다.

<!DOCTYPE html>
<html>
   <head>
      <style>
         #container {
            height: 250px;
            display: flex;
            flex-flow: column wrap;
            padding: 2%;
            background: url("https://images.unsplash.com/photo-1523830213227-f76e0415a976?ixid=MXwxMjA3fDB8MHx0b3BpYy1mZWVkfDE0fDZzTVZqVExTa2VRfHxlbnwwfHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=650&q=60") 0;
         }
         img {
            margin: 2%;
            width: 60px;
            border-radius: 25%;
         }
      </style>
   </head>
   <body>
      <div id="container">
         <img src="https://images.unsplash.com/photo-1502989642968-94fbdc9eace4?ixid=MXwxMjA3fDB8MHx0b3BpYy1mZWVkfDZ8NnNNVmpUTFNrZVF8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=100&q=60" />
         <img src="https://images.unsplash.com/photo-1502989642968-94fbdc9eace4?ixid=MXwxMjA3fDB8MHx0b3BpYy1mZWVkfDZ8NnNNVmpUTFNrZVF8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=100&q=60" />
         <img src="https://images.unsplash.com/photo-1502989642968-94fbdc9eace4?ixid=MXwxMjA3fDB8MHx0b3BpYy1mZWVkfDZ8NnNNVmpUTFNrZVF8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=100&q=60" />
         <img src="https://images.unsplash.com/photo-1502989642968-94fbdc9eace4?ixid=MXwxMjA3fDB8MHx0b3BpYy1mZWVkfDZ8NnNNVmpUTFNrZVF8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=100&q=60" />
         <img src="https://images.unsplash.com/photo-1502989642968-94fbdc9eace4?ixid=MXwxMjA3fDB8MHx0b3BpYy1mZWVkfDZ8NnNNVmpUTFNrZVF8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=100&q=60" />
         <img src="https://images.unsplash.com/photo-1502989642968-94fbdc9eace4?ixid=MXwxMjA3fDB8MHx0b3BpYy1mZWVkfDZ8NnNNVmpUTFNrZVF8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=100&q=60" />
         <img src="https://images.unsplash.com/photo-1502989642968-94fbdc9eace4?ixid=MXwxMjA3fDB8MHx0b3BpYy1mZWVkfDZ8NnNNVmpUTFNrZVF8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=100&q=60" />
      </div>
   </body>
</html>

실행 결과, 이미지들이 컨테이너 높이에 맞춰 세로로 쌓이다가 공간이 부족해지면 다음 열로 자동 줄바꿈되어 배치됩니다.

CSS Flex를 활용한 컨테이너 좌우 정렬 구현 방법

정리

컨테이너에 display: flex를 선언하고 justify-content: space-between만 추가하면 별도의 float나 position 없이도 깔끔한 좌우 정렬 레이아웃을 만들 수 있습니다. 여기에 flex-direction, flex-flow 등의 속성을 조합하면 가로·세로 등 다양한 배치 형태를 손쉽게 구현할 수 있습니다.