CSS Flex

ExpoDaniel·2023년 2월 28일
0

Front-end

목록 보기
4/6

Flex는 레이아웃 배치 전용 기능으로 고안되었다. 그래서 레이아웃을 만들 때 딱히 사용할게 없어서 쓰던 float나 inline-block 등을 이용한 기존 방식보다 훨씬 강력하고 편리한 기능들이 많다.

Flex 레이아웃을 만들기 위한 기본적인 HTML 구조

<div class="container">
	<div class="item">helloflex</div>
	<div class="item">abc</div>
	<div class="item">helloflex</div>
</div>

부모 요소인 div.container를 Flex Container(플렉스 컨테이너)라고 부르고,
자식 요소인 div.item들을 Flex Item(플렉스 아이템)이라고 부른다.

Flex의 속성들은,

  • 컨테이너에 적용하는 속성
  • 아이템에 적용하는 속성 이렇게 두가지로 나뉜다.
  • Flex 컨테이너에 적용하는 속성들

    display: flex;

    .container {
    	display: flex;
    	/* display: inline-flex; */
    }

    Flex 아이템들은 가로로 정렬되고 자신이 가진 내용물의 width만큼 차지한다.
    height는 컨테이너의 높이만큼 늘어난다.
    (출처 - https://studiomeal.com/archives/197)

    배치 방향 설정 flex-direction

    .container {
    	flex-direction: row;
    	/* flex-direction: column; */
    	/* flex-direction: row-reverse; */
    	/* flex-direction: column-reverse; */
    }

    줄넘김 처리 설정 flex-wrap

    컨테이너가 더 이상 아이템들을 한 줄에 담을 여유 공간이 없을 때
    아이템 줄바꿈을 어떻게 할지 결정하는 속성

    .container {
    	flex-direction: row;
    	/* flex-direction: column; */
    	/* flex-direction: row-reverse; */
    	/* flex-direction: column-reverse; */
    }

    정렬 방법

    “justify”는 메인축(오뎅꼬치) 방향으로 정렬
    “align”은 수직축(오뎅을 뜯어내는) 방향으로 정렬

    메인축 방향 정렬 justify-content

    flex-start (기본값)
    아이템들을 시작점으로 정렬
    flex-direction이 row(가로 배치)일 때는 왼쪽, column(세로 배치)일 때는 위
    flex-end
    아이템들을 끝점으로 정렬합니다.
    flex-direction이 row(가로 배치)일 때는 오른쪽, column(세로 배치)일 때는 아래예요.
    center
    아이템들을 가운데로 정렬합니다.
    space-between
    아이템들의 “사이(between)”에 균일한 간격을 만들어 줍니다.
    space-around
    아이템들의 “둘레(around)”에 균일한 간격을 만들어 줍니다.
    space-evenly
    아이템들의 사이와 양 끝에 균일한 간격을 만들어 줍니다.
    주의! IE와 엣지(Edge)에서는 지원되지 않습니다👎
    이 웹사이트의 메뉴 부분은 브라우저 폭이 1024px 이상일 때 space-evenly가 적용되도록 했는데요, IE와 엣지에서만 space-around로 적용이 되도록 처리해 두었어요.

    수직축 방향 정렬 align-items

    stretch (기본값)
    아이템들이 수직축 방향으로 끝까지 쭈욱 늘어납니다.
    flex-start
    아이템들을 시작점으로 정렬합니다.
    flex-direction이 row(가로 배치)일 때는 위, column(세로 배치)일 때는 왼쪽이에요.
    flex-end
    아이템들을 끝으로 정렬합니다.
    flex-direction이 row(가로 배치)일 때는 아래, column(세로 배치)일 때는 오른쪽이에요.
    center
    아이템들을 가운데로 정렬합니다.
    baseline
    아이템들을 텍스트 베이스라인 기준으로 정렬합니다.

    여러 행 정렬 align-content

    flex-wrap: wrap;이 설정된 상태에서, 아이템들의 행이 2줄 이상 되었을 때의 수직축 방향 정렬을 결정하는 속성

    .container {
    	flex-wrap: wrap;
    	align-content: stretch;
    	/* align-content: flex-start; */
    	/* align-content: flex-end; */
    	/* align-content: center; */
    	/* align-content: space-between; */
    	/* align-content: space-around; */
    	/* align-content: space-evenly; */
    }

    Flex 아이템에 적용하는 속성들

    유연한 박스의 기본 영역 flex-basis

    flex-basis는 Flex 아이템의 기본 크기를 설정(flex-direction이 row일 때는 너비, column일 때는 높이).

    .item {
    	flex-basis: auto; /* 기본값 */
    	/* flex-basis: 0; */
    	/* flex-basis: 50%; */
    	/* flex-basis: 300px; */
    	/* flex-basis: 10rem; */
    	/* flex-basis: content; */
    }

    출처: https://studiomeal.com/archives/197

    profile
    로그함수 성장을 그리고 싶은 개발자 지망생

    0개의 댓글