요즘 유데미에서 HTML, CSS, JavaScript로 20가지의 간단한 프로젝트를 만들어보는 강의를 수강하고 있다. 개별 강의가 모두 길지 않아 부담 없으면서도 유용하고, 무엇보다 HTML/CSS를 복습하면서 JavaScript로 DOM을 다루거나 API를 사용해보고 비동기 관련 문법을 실제 프로젝트에 적용해보는 등 실무에 가까운 실습을 반복적으로 연습할 수 있다는 큰 장점이 있다. 아무 프레임워크나 라이브러리를 사용하지 않아 바닐라 자바스크립트를 연습해보기에 아주 유용하고 재미있는 강의다. 강추추추추 👍
실습을 하다보면 CSS 파트에서 flex:1
이라는 속성이 자주 등장하는데, flex
의 세 속성을 한 번에 작성하기 위한 단축 표현이라는 것만 어렴풋이 알뿐 너무 헷갈렸고, 구글링해보니 실무에서 빈번히 사용되는 것 같아 다시 정리를 해보려고 한다.
먼저, flex
속성은 flex-grow, flex-shrink, flex-basis를 한번에 나타낸다.
flex-basis
(flex item의 기본 크기)보다 늘어날 수 있는지 결정하는 속성flex-basis
를 제외한 나머지 여백을 해당 비율로 나눠 갖겠다는 의미flex-basis
(flex item의 기본 크기)보다 줄어들 수 있는지 결정하는 속성flex-grow
와 공통점이 많다!flex-basis
보다 줄어들지 않으므로 고정 너비를 설정할 수 있다 = inflexibleauto
는 컨텐츠의 너비만큼을 의미flex-direction
이 row
일 때는 너비, column
일 때는 높이를 의미그렇다면 flex: 1
의 의미는 무엇일까?
flex: 1
은 풀어서 보면
flex-grow: 1;
flex-shrink: 1;
flex-basis: 0%
를 의미한다.
즉, flex-basis가 0이므로 점유 크기를 0으로 만든 후 화면 비율에 따라 유연하게 늘어나거나 줄어들 수 있음을 만드는 속성이다.
위에서 빨간 네모 박스안의 Income과 Expense 각각의 div
에 다음과 같은 CSS 속성이 적용되었다.
.inc-exp-container > div {
flex: 1;
text-align: center;
}
각각의 div
가 부모인 flex container의 너비가 변할 때에도 동일한 비율로 늘어나고 줄어듬을 확인할 수 있다.
💡 참고 사이트
1분코딩-Flex
Stack Overflow
감사합니다.