웹1 9일차 - 마켓컬리3

[🐟display: flex; 🐟 ]

 

{flex를 가진 box}

 

[flex-container]

flex를 적용한 태그는 flex-container라고 부른다. 

 

-item을 정렬하는 코드는 전부 flex-container에 작성된다. 

ㄴ justify-content: 가로 정렬

ㄴ align-items: 세로 정렬

ㄴ flex-direction: 정렬 방향

ㄴ flex-wrap: 줄바꿈 정렬(반응형)

ㄴ align-content: 줄바꿈 되었을 때 정렬(반응형)

-브라우저에서 도형취급 받는다. margin-left: auto;와 margin-right: auto;로 중앙 정렬한다.

-width: auto;일 때 100%로 작동한다. 

 

[flex-item]

flex를 적용한 태그의 자식 태그는 flex-item이라고 부른다. 

 

-width: auto;일 때 0으로 작동한다. 

-height: auto;일 때 100%으로 작동한다. 

-text-align으로 정렬할 수 없다. 

-flex-item의 크기를 직접적으로 커스텀하는 속성은 flex-item에 직접 적용한다. 

ㄴ flex-grow: 비율

ㄴ flex-basis: 비율 설정

ㄴ flex-shrink: 고정 설정

-align-items가 적용된 flex-item은 height: auto일 때 0으로 작동된다. 

 

 

{flex란?}

display의 속성값 flex는 한 줄에 여러 개의 요소, 가로 중앙정렬, 세로 중앙정렬, 반응형 레이아웃, 줄바꿈 등...의 여러가지 기능들을 어렵지 않게 사용할 수 있는 속성값이다.

  

쉽게 말해 하위 요소에 '유연함'을 준다고 말할 수 있다. 

즉, 어떠한 요소를 직접 움직이고 싶다면 그 요소를 flex-item으로 만들어야 한다. 

 

그렇게 받은 '유연함'으로 하위 요소의 크기가 고정형이어도 경우에 따라 반응형으로 적용되어 크기가 줄어들기도 한다.

자세한 특징은 아래에서 확인해보자. 

 

 

{flex 특징}

1. flex-item은 flex-container의 높이를 상속 받는다. 

    즉, flex-item의 높이가 auto일 때 100%로 작동한다. 

2. flex-item은 정해진 넓이값이 있어도, 공간이 부족하면 유연하게 줄어든다. 

3. 2번 특징의 연장선으로, flex-container%또는 body의 넓이를 상속 받았을 때 flex-item은 고정 px로 되어있어도 반응형이다. 

    즉, 화면이 작아져도 잘리지 않고 같이 줄어든다.  

 

 

{flex 주의!}

flex-container안에 여러 개의 flex-item이 있고 그중에 하나만 높이를 정해주면 모든 flex-item이 그 높이를 따라간다. 

왜냐? 높이 상속의 순서를 살펴보자.

1) flex-item-5의 높이는 100px  -->  기본값이 하위요소를 따라가는 flex-container의 높이가 100px로 자동 변경

2) 나머지 flex-item들의 높이는 상위 엘리먼트인 flex-container의 높이 100px를 따라감

3) 결과적으로 모두가 100px의 높이를 가지게 된다. 

 

 

{flex-item의 정렬}

flex-item을 정렬할 때는 flex-direction의 정렬 방향에 따라 같은 속성의 속성값이라도 정렬 방향이 가로/세로로 바뀐다. 아래의 속성을 flex-container에게 적용해야 한다. 

 

[flex-direction] 방향

(row)         justify-content: 가로 정렬

                 align-items: 세로 정렬

                 flex-grow: 비율, 가로에서 작동

(column)   justify-content: 세로 정렬

                 align-items: 가로 정렬

                 flex-grow: 비율, 세로에서 작동

 

 

(flex-item) auto

( align-items O )    ( align-items X )

height: auto = 0       height: auto = 100%   

 

flex-container의 높이 = flex-item의 높이

ㄴ(문제점) 높이가 같아서 정렬할 수 없다. 

ㄴ(해결) flex-container가 강제로 flex-item 높이를 작게 만들어서 원하는 위치로 정렬시킨다. 

 

기본값으로 flex-container와 높이가 같아져있는 flex-item

flex-container에 align-items가 적용되어 있을 때 자동으로 높이가 0이 되어 중앙 정렬이 되는 flex-item.

 

 

 

 

[flexbox froggy 하면서 궁금한 속성의 개념]  

justify-content: space-around; : flex-item들의 둘레(around)에 균일한 간격을 만들어 준다.

 

justify-content: space-between; : flex-item들의 사이(between)에 균일한 간격을 만들어 준다.  

 

flex-wrap: 줄바꿈 정렬

ㄴ nowrap: 모든 요소를 한 줄에 정렬

ㄴ wrap: 요소들을 여러 줄에 걸쳐 정렬

ㄴ wrap-reverse: 요소들을 여러 줄에 걸쳐 반대로 정렬 

 

flex-flow: flex-direction의 속성과 flex-wrap의 속성을 합쳐 놓은 약식 속성

마치 margin-4direction을 margin으로 합쳐놓은 듯한 느낌.

 

align-content: flex-wrap의 동작을 변경할 수 있다. align-items와 비슷한 동작을 하지만, 플렉스 요소를 정렬하는 대신에 플렉스 라인을  정렬한다. 

 

 

 

 

 

 


 

 

**css 꿀팁

구글 아이콘은 기본적으로 적용되는 line-height가 있다. 

기본 css의 값 아래에 추가적으로 line-height를 정해주면 조절할 수 있다. 

 

'' 카테고리의 다른 글

웹2 수업페이지  (0) 2024.04.12
웹2 1일차  (0) 2024.04.12
웹1 8일차 - 마켓컬리2  (0) 2024.04.03
웹1 7일차 - 마켓컬리1  (0) 2024.03.29
웹1 6일차  (0) 2024.03.27