플렉스 정렬하면 div의 내용이 인라인 블락처럼 작용함
display: flex;
Grid는 몇 개씩 표현할지 정하는 코드가 필요해서 두 줄이 필요함
Flex하면 자식들이 다 Inline Block처럼 바껴서 일자로 정렬됨
Grid : 쇼핑몰같이 규칙적으로 배치가 될 때 사용함
여러줄 배치할때는 Grid
Flex : 한 줄을 정리할때
가운데 배치는 Grid보다 Flex가 좋음
부모가 Flex, 정렬을 justify-content / align items 사용함
배치할 때 부모를 만들어야 나중에 무너지지 않음
1. 가운데 배치하기
<!DOCTYPE html> <html> <head> <style> .main { display: flex; justify-content: center; } .flex-container { width: 80%; display: flex; background-color: DodgerBlue; } .flex-container>div { background-color: #f1f1f1; margin: 10px; padding: 20px; font-size: 30px; } </style> </head> <body> <div class="main"> <div class="flex-container"> <div>1</div> <div>2</div> <div>3</div> </div> </div> </body> </html>
2. 디폴트 값 : row
.flex-container { width: 80%; display: flex; flex-direction: row; background-color: DodgerBlue; }
3. 블락과 동일
.flex-container { width: 80%; display: flex; flex-direction: column; background-color: DodgerBlue; }
디폴트 값이 있음
컬럼 : 세로
로우 : 가로
justify-content : 동적인 정렬
바라보고 있는 축에 따라서 정렬이 달라짐
메인 액시아스(main axis) : 메인 축 정렬
모든 정렬이 지금 가고 있는 축을 기준으로 축 정렬을 함
4. 비율 맞출때
Flex 도 그리드처럼 Flex 의 숫자들의 합이 분모가 되고, 자신의 값이 분자가 됨
.flex-container>div { background-color: #f1f1f1; margin: 10px; padding: 20px; font-size: 30px; height: 50px; flex: 1; }
5. Responsive Flexbox : 화면을 줄였을때 흘러내려가게 하는 방법
조건보다 작으면 작용함
1) 미디어 쿼리(Media Query) : 반응형 브라우저 크기에 따라 반응함
@media (max-width: 800px) { .flex-container { flex-direction: column; } }
2) 부모가 %일때
자식에게 고정 크기
object-fit : contain 자기 비율에 맞게 들어감
fill 꽉 차게 들어감
cover 비율을 유지한 채로 겉이 짤림
3) 2wrap : 미디어 쿼리를 안써도 크기가 줄어들면 내려감
<사진의 크기를 고정으로 지정할 때>
200으로 지정하고 랩을 주면 비율이 안 깨지고 예쁘게 배열됨
<!DOCTYPE html> <html> <head> <style> .flex-container { display: flex; flex-wrap: wrap; font-size: 30px; text-align: center; background-color: yellow; padding: 10px; width: 70%; } .flex-item { background-color: #f1f1f1; padding: 10px; width: 300px; border: 1px solid black; } </style> </head> <body> <div class="flex-container"> <div class="flex-item">1</div> <div class="flex-item">2</div> <div class="flex-item">3</div> <div class="flex-item">4</div> <div class="flex-item">5</div> </div> </body> </html>
Share article