본문 바로가기

끄적끄적

CSS-flex

미루고 미뤘던 flexbox속성 공부를 드디어 했다.🤪

사실 어제 웹퍼블리싱 강의를 저녁에 듣는데 이게 뭔가..? 하고 있었다.

나름 html,css를 쥐어짜내서 원하는 모양대로는 만들 수 있을꺼라 생각했는데 전혀..?ㅋㅋㅋㅋ

네이버 검색바 만들기, 네비게이션바 만들기하고 있는데 일단 class,id부터 헷갈려... 살려주..ㅓ

그러다가 이렇게 효율없이 보고만 있지말고 🤔뭐라도 얻어가자는 마음에 가장 많이 보이는 속성들을 둘러보니까

진짜 기본으로 있는게 이 flexbox속성이였다 (+물론 justify,align도 항상 붙어서)

그래서 직감적으로 알았다지.. 아 flexbox 공부할때가 됬구나.. 애매하게 알고 있던거 이번에 정리를 쫌 하자는 마음에 

시작을 했다..! (서론이 기네..;;)


일단 기본적인 틀을 가지고  기록을 하는 게 나중에 다시 봐도 잘 이해가 되겠지.

-container안이 flex의 영향을 받는 공간이다.


1.container

①display:flex; 라고 입력 시 가장 기본적으로 기본 그림과 같이 가로로 inline-block처럼 내용들이 나열이 된다.

height는 컨테이너의 높이만큼 알아서 정렬이 됨

더보기

(※display:block이라고 설정 시 => ▷

                                                     

                                                     

 //이런 순서로 진행된다.

②flex-direction

:메인 축 방향을 결정하는 속성

   1)row : 가로방향 👉👉👉👉

   2)column : 세로방향  👇

                                     👇

                                     👇

                                     👇

   *약간 블로그들을 읽어보다가 반응형으로 모바일에선 column => PC에서 row로 해주면 좋겠다라는 글을 봤다.

 

③flex-wrap

: 컨테이너 안에 item들이 넘칠경우 줄넘김 처리

    =>nowrap(줄넘김X), wrap, wrap-reverse : 검색해보기

④flex-flow

 : direction + wrap을 합쳐서 쓸 수있는 간단 입력식

  =>ex) flex-flow: row,wrap

 

⑤정렬방향

  • justify : 메인축 방향으로 정렬

  • align : 수직축 방향으로 정렬

  => justify-content:flex-start····  #검색해보기

  => align-content:flex-start····

그래서 이 두가지를 center로 맞춰주면 container안에서 중간을 유지할 수 있게 된다.


2.Item

①flex-basis : container안 item들의 기본크기를 설정한다(direction-row: width ,, direction-column:row 의 길이를 설정)

 

=>item{flex-basis:100px}을 해준다면 👇👇이렇게 400에 딱맞게 사이즈가 조절되는 것을 알 수 있다.

 

 

 

 

②flex-grow

   :basis로정해진 크기에 지정한 배열로 여백을 늘려준다.

   아까전 50px로 지정되어 오른쪽에 여백이 남는 것을 볼 수 있었는데 grow 속성을 써서 item들 각각

   원하는width로 설정을 할 수 있다.

.item:nth-child(1){flex-grow: 1;}
.item:nth-child(2){flex-grow: 1;}
.item:nth-child(3){flex-grow: 0;}
.item:nth-child(4){flex-grow: 2;}

200px남은 거에서 이 속성들의 합을 구하면 4이므로 1=50px이 된다.

그럼 1,2번 item은 100px이 되는것이고 3번 아이템은 그냥 50px, 4번 아이템은 200이 된다.

 (실제로는 패딩값을 다 생각하고 계산을 해야하지만 지금은 간단히 아이템 width만 생각했다.)

 

③flex-shrink

 :flex-grow와 반대이며 기본값으로 1을 가져서 basis보다 크기가 작아진다.

 그래서 width를 고정하고 싶다면 0을 입력해주어야하며 이 속성을 쓸때는 nowrap이 필수다.

 

만약 120px로 basis를 짰더니 80px이 넘어버리는 상황이 생겼다. 그럴 때 사용한다.

.item:nth-child(1){flex-shrink: 1;}
.item:nth-child(2){flex-shrink: 1;}
.item:nth-child(3){flex-shrink: 0;}
.item:nth-child(4){flex-shrink: 2;}

이렇게 적혀있다치자,

그러면 총 속성값이 4가 되고 넘은 px값이 80이므로 나누면 20px이 된다.

즉 1=20px씩 줄이면 된다.

1,2번은 100px이 되고

3번은 고정( 이때 width값을 딱 정해주면 고정값으로 하기 좋다)

4번은 80px이 되는 것이다.

 

이 위에 내용은 row에서의 내용이고, 아까 적었던 것 처럼 columnd은 height값을 조절한다고 생각하면된다.

이제 어느정도 정리를 했으니 필요할땐 이 내용을 바탕으로 구글링하면 더 빨리 이해하고 속성을 가져올 수 있겠다😎😎

'끄적끄적' 카테고리의 다른 글

React memoization  (0) 2023.04.23
typescript interface  (0) 2023.04.12
좋은 TIL은 뭘까?(38)  (1) 2022.12.22
4주차 부족한부분 공부  (0) 2022.10.28
3주차 부족부분 공부  (0) 2022.10.28