나만 몰라 Display : flex

가은·2022년 7월 17일
0

HTML과 CSS

목록 보기
8/8

📍플렉스 박스 레이아웃

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

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

https://media.vlpt.us/images/oxxun21/post/63efdbeb-5963-433e-a369-d724f10e24ec/image.png

플렉스 컨테이너
▪️ 웹 문서에 텍스트나 이미지, 표 등 웹 요소들을 플렉스하게 사용하려면 먼저 플렉스 컨테이너로 묶어야한다.

플렉스 항목
▪️ 플렉스 컨테이너에 담기는 웹 요소이다.

주축
▪️ 플렉스 컨테이너 안에서 플렉스 항목을 배치하는 기본 방향이다.
▪️ 주축에서 플렉스 항목이 배치되기 시작하는 지점을 '주축 시작점', 끝나는 지점을 '주축 끝점'이라고 한다.

교차축
▪️ 교차축은 주축과 교차되는 방향이다.
▪️ 교차축에서 배치가 시작되는 지점을 '교차축 시작점', 끝나는 지점을 '교차축 끝점'이라고 한다.

사용하는 속성

display 속성 : 플렉스 컨테이너 지정하기
▪️ 플렉스 박스 레이아웃을 만들려면 먼저 웹 콘텐츠를 플렉스 컨테이너로 묶어야한다.
▪️ 배치하려는 웹 요소들이 있다면 그 요소를 감싸는 부모 요소를 만들고 그 부모 요소를 플렉스 컨테이너로 만든다.
▪️ 특정 요소가 플렉스 컨테이너로 동작하려면 display 속성을 이용하여 플렉스 박스 형태를 지정해야한다.

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

flex-direction 속성 : 플렉스 방향 지정하기
▪️ 플렉스 항목의 주축을 가로(row)로 할지, 세로(column)로 할지 지정한다.

속성 값설명
row주축을 가로로 교차축을 세로로 지정 / 플렉스 항목은 왼쪽에서 오른쪽 배치 (기본 값)
row-inverse주축을 가로로 교차축을 세로로 지정 / 플렉스 항목은 오른쪽에서 왼쪽 배치
column주축을 세로로 교차축을 가로로 지정 / 플렉스 항목은 왼쪽에서 오른쪽 배치
column-inverse주축을 세로로 교차축을 가로로 지정 / 플렉스 항목은 오른쪽에서 왼쪽 배치

flex-wrap 속성 : 플렉스 항목을 한 줄 또는 여러 줄로 배치하기
▪️ 기본적으로 플렉스 항목들은 주축 방향을 따라 한 줄로 배치한다.
▪️ flex-wrap 속성을 이용하여 여러 줄로 배치할 수 있다.

속성 값설명
no-wrap플렉스 항목들을 한 줄에 표시 (기본 값)
wrap플렉스 항목을 여러 줄에 표시
wrap-reverse플렉스 항목을 여러 줄에 표시하되 기존 방향과 반대로 배치
/* flex-wrap을 지정하지 않을 때 */
<style>
		#container {
			width:500px;
			height:300px;
			margin:0 auto;
			display:flex;
			border:2px solid black;
		}
		#container div {
			width:200px;
			border: 2px solid black;
			background:#ccc;
		}
		h2 {
			font-size:20px;
			font-weight:bold;
			padding:20px;
		}
	</style>
</head><body><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></body>

https://media.vlpt.us/images/oxxun21/post/9967ce9d-4506-4109-8ae2-c2fb268aee72/%ED%99%94%EB%A9%B4%20%EC%BA%A1%EC%B2%98%202022-02-24%20155239.png

/* flex-wrap을 지정했을 때 */
<style>
        #container {
            width: 500px;
            height: 300px;
            margin: 0 auto;
            display: flex;
            flex-wrap: wrap;
            border: 2px solid black;
        }
		#container div {
			width:200px;
			border: 2px solid black;
			background:#ccc;
		}
		h2 {
			font-size:20px;
			font-weight:bold;
			padding:20px;
		}
	</style></head>
<body><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></body>

https://media.vlpt.us/images/oxxun21/post/5808d90c-6def-4b87-912b-47dbb209a762/%ED%99%94%EB%A9%B4%20%EC%BA%A1%EC%B2%98%202022-02-24%20155308.png

flex-flow 속성 : 플렉스 방향과 여러 줄의 배치를 한꺼번에 지정하기
▪️ 플렉스 박스를 이용해 항목들을 배치할 때 기본이 되는 방향과 여러 줄 배치 여부는 flex-flow로 한 번에 지정할 수 있다.
▪️ 이때 플렉스 배치 방향과 여러 줄의 배치 방법을 공백 문자로 구분해 표시한다.

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

order 속성 : 플렉스 항목의 배치 순서 바꾸기
▪️ 플렉스 항목은 소스 코드에서 입력한 순서대로 주축을 따라 배치되지만 order 속성으로 배치 순서를 바꿀 수 있다.
▪️ order 값이 0이라면 소스에 입력한 순서대로 배치되고 order 값을 숫자로 하면 그 순서에 따라 배치된다.
▪️ order 속성은 플렉스 컨테이너가 아닌 플렉스 항목에서 지정해야한다.

flex 속성 : 플렉스 항목 크기 조절하기

속성 값설명
flex-grow플렉스 항목의 너비를 얼마나 늘릴지 숫자로 지정
flex-shrink플렉스 항목의 너비를 얼마나 줄일지 숫자로 지정
flex-basis플렉스 항목의 기본 크기 지정
width 속성처럼 너비 값을 지정할 수도 있고 0이나 auto를 지정할 수도 있음
auto항목의 width/height 값에 의해 크기가 결정되지만 플렉스 컨테이너의 공간에 따라 늘이거나 줄인다.
initial항목의 width/height 값에 의해 크기가 결정되는데 플렉스 컨테이너의 공간이 부족할 경우, 최소 크기까지 줄임
flex: [<flex-grow> <flex-shrink> <flex-basis>] | auto | initial

▪️ flex-grow, flex-shrink, flex-basis 속성은 flex 속성으로 묶어 사용하는 걸 권장하고 있다.

플렉스 박스 항목 배치를 위한 속성

justify-content 속성 : 주축 기준의 배치 방법 지정하기

속성 값설명
flex-start주축의 시작점을 기준으로 배치
flex-end주축의 끝점을 기준으로 배치
center주축의 중앙을 기준으로 배치
space-between양 끝점을 맞춰 배치 후 중앙 항목들을 같은 간격으로 배치
space-around모든 플렉스 항목들을 같은 간격으로 배치

https://media.vlpt.us/images/oxxun21/post/92d4c311-1e1a-4627-87b4-4911230f7034/image.png

align-items , align-self 속성 : 교차축 기준의 배치 방법 지정하기

속성 값설명
stretch플렉스 항목을 확장해 교차축을 꽉 채움 (기본 값)
flex-start교차축의 시작점을 기준으로 배치
flex-end교차축의 끝점을 기준으로 배치
center교차축의 중앙을 기준으로 배치
baseline시작점과 글자 기준선이 가장 먼 플렉스 항목을 시작점에 배치 글자의 기준선과 다른 항목의 기준선을 맞추어 배치

▪️ align-self 속성을 이용하면 플렉스 항목을 개별적으로 배치할 수 있다.
▪️ 플렉스 항목 자체의 스타일로 지정한다.
▪️ align-self 속성 값은 auto가 추가된다. (플렉스 항목의 부모 속성 값을 상속 받는다.)

align-content 속성 : 여러 줄일 때 배치 방법 지정하기
▪️ align-content 속성 값은 justify-content 속성 값과 동일하다.
▪️ 플렉스 항목이 여러 줄에 걸쳐 표시될 때 교차축 방향의 배치 방법을 지정할 수 있다.

✏️

container에 지정되는 속성
▪️ display
▪️ flex-direction
▪️ flex-wrap
▪️ flex-flow
▪️ justify-content
▪️ align-items
▪️ align-content

item에 지정되는 속성
▪️ order
▪️ flex-grow
▪️ flex-shrink
▪️ flex
▪️ align-self

profile
일이 재밌게 진행 되겠는걸?

0개의 댓글