Flexbox

  (일차원배열) 배치 방향을 설정. 기본정렬 row. 

   display block 한 줄을 차지하는 요소들 중 너비, 높이를 가질 수 있는 요소들을 좌우로 정렬한다고 했을 때 주로 사용한다.

 

 

개념

    container : item을 감싸는 부모요소. display, flex-flow, flex-direction, flex-wrap, justify-content, align-content, align-items 등의 속성을 사용할 수 있음

    item : order, flex, flex-grow, flex-shrink, flex-basis, align-self등의 속성을 사용할 수 있음

 

예시 html

<!DOCTYPE html>
<html lang="en">
<link rel="stylesheet" href="index.css">

<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">
    <title>Document</title>
</head>

<body>
    <div class="flex-container">
        <div class="flex-item">A</div>
        <div class="flex-item">B</div>
        <div class="flex-item">C</div>
    </div>
</body>
<script>
    console.log('스크립트')
</script>

</html>

 

 

flex-grow

  • 할당 가능한 공간의 정도
  • 형제 아이템들이 모두 동일한 flex-grow(공간)값을 갖음
  • 형제 아이템들이 다른 경우

ex) 3개의 div 중 첫 번째 값만 flex-grow : 2; 나머지 값이 flex-grow : 1을 가질 경우

          첫 번째 값이 2번째 혹은 3번째 div의 2배의 영역을 차지한다.

.flex-container {
    display: flex;
    background-color: antiquewhite;
    padding: 10px;
}

.flex-item {
    background-color: red;
    border: 1px solid black;
    flex-grow: 1;
    width: 150px;
}

.flex-item:nth-child(1) {
    flex-grow: 2;
}

 

 

 

flex-shrink

  • 아이템의 크기가 container보다 클 때 사용
  • 설정된 값에 따라 크기가 축소
  • flex-shrink : 0 = 줄어들지 않겠다.
.flex-container {
    display: flex;
    background-color: antiquewhite;
    padding: 10px;
    width: 300px;
}

.flex-item {
    background-color: red;
    border: 1px solid black;
    flex-grow: 1;
    width: 150px;
}

/*container 크기 300px에 맞게 flex-item이 줄어듬*/


.flex-item {
    background-color: red;
    border: 1px solid black;
    flex-grow: 1;
    width: 150px;
    flex-shrink: 0;
}
/*container 영역을 벗어나더라도 150px을 유지함*/

 

 

 flex-basis

  • 아이템의 초기 크기
  • 상하 정렬일 경우 높이값
  • 좌우 정렬일 경우  너비값
  • 'auto가 아니라명 width, height 보다 flex-basis가 우선

 

+) reverse 속성

flex-direction : column-reverse 아래부터 배치함

 

 

한꺼번에 표현하기

flex : flex-grow   flex-shrink   flex-basis 형태로 사용할 수 있다.

flex: 1 0 100px 

 

 

 

**inline flex와 flex 차이

    flex : 컨테이너가 수직으로 쌓임 (Block 특성)

    inline-flex : 컨테이너가 수평으로 쌓임 (Inline 특성)

 

 

    기본축 (Main Axis) :요소를 정렬하는 축

    교차축 (Cross Axis) : 기본축에 수직인 방향

 

justify-content : 기본축 기준으로 정렬

    space-around : 요소들 사이에 모두 같은 간격의 공간이 생김

    space-between : 요소를 양끝에 배치하고 사이에 동일한 간격으로 배치

 

align-items : 교차축을 기준으로 정렬

 

요소가 넘칠 때

    flex-wrap : 기본축 정렬 요소가 넘칠때 교차축 정렬으로 넘어가서 배치

    flex-grow : 얼마나 늘릴지를 설정. 요소를 늘려서 빈 공간을 꽉채우고 싶을 때. 숫자에 비례해 늘어남. 

    flex-shrink : 얼마나 줄일지를 설정. 값이 클수록 더 많이 줄어듬

       *빈공간을 채우고 싶을 때 flex-grow:1, 요소의 크기를 고정하고 싶을 때 flex-shrink:0

    flex-basis : 플렉스 아이템의 초기 크기를 지정

 

gap : 세로, 가로 (margin 순서랑 같음)

 

 

 

'css' 카테고리의 다른 글

[CSS] Grid  (0) 2023.04.23
[CSS] display  (0) 2023.04.22
[CSS] position  (0) 2023.03.16
HTML와 CSS  (0) 2023.02.27

+ Recent posts