Skip to content

Latest commit

Β 

History

History
411 lines (231 loc) Β· 6.95 KB

cssFlex.md

File metadata and controls

411 lines (231 loc) Β· 6.95 KB

CSS Flex

[μž‘μ„±μž: λ…Έν¬μž¬]




πŸ’‘Β  Float λ‚˜ Inline-block 같은 방식보닀 훨씬 κ°„νŽΈν•˜κ²Œ λ ˆμ΄μ•„μ›ƒμ„ 배치 ν•  수 μžˆλŠ”

Flex κΈ°λŠ₯에 λŒ€ν•΄ μžμ„Ένžˆ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.




Flex 와 Grid 의 차이


Flex - ν•œ λ°©ν–₯ λ ˆμ΄μ•„μ›ƒ μ‹œμŠ€ν…œ (1차원)

Grid - 두 λ°©ν–₯ λ ˆμ΄μ•„μ›ƒ μ‹œμŠ€ν…œ (2차원)

Grid κ°€ 더 μ΅œμ‹  κΈ°λŠ₯이기 λ•Œλ¬Έμ— Flex κ°€ κ΅¬μ‹œλŒ€ 기술이 λ˜μ–΄λ²„λ Έλ‹€λŠ” μ˜κ²¬λ“€λ„ μžˆμ§€λ§Œ

Grid λ‘œλŠ” κ΅¬ν˜„μ΄ μ–΄λ €μš΄ λ ˆμ΄μ•„μ›ƒμ΄κ±°λ‚˜

Flex λ₯Ό μ“°λŠ”κ²Œ 더 νŽΈλ¦¬ν•œ κ²½μš°κ°€ 있기 λ•Œλ¬Έμ— 두가지 λͺ¨λ‘λ₯Ό μ΅νžˆλŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.



Flex


Flex 의 속성듀은

  1. μ»¨ν…Œμ΄λ„ˆμ— μ μš©ν•˜λŠ” 속성
  2. μ•„μ΄ν…œμ— μ μš©ν•˜λŠ” 속성

λ‘κ°€μ§€λ‘œ λ‚˜λ‰©λ‹ˆλ‹€.




1. μ»¨ν…Œμ΄λ„ˆμ— μ μš©ν•˜λŠ” 속성



  • display: flex;

1

이런 μ‹μœΌλ‘œ λ°°μΉ˜λ˜μ–΄ μžˆλŠ” λ ˆμ΄μ•„μ›ƒμ—

display: flex;

ν•œ 쀄을 μ μš©ν•˜λ©΄

2

Flex λŠ” κ°€λ‘œλ°°μΉ˜κ°€ κΈ°λ³Έμ΄λ―€λ‘œ μ΄λ ‡κ²Œ κ°€λ‘œλ‘œ λ°°μΉ˜λ©λ‹ˆλ‹€.

μ—¬κΈ°μ„œ container 에 height λ₯Ό 지정해주고 item μ—λŠ” μ§€μ •λœ height κ°€ μ—†λ‹€λ©΄?

3

container 의 height λ₯Ό 따라 item 의 height 도 λŠ˜μ–΄λ‚©λ‹ˆλ‹€.




  • 배치 λ°©ν–₯ μ„€μ •

flex-direction: ;

μ•„μ΄ν…œλ“€μ΄ λ°°μΉ˜λ˜λŠ” μΆ•μ˜ λ°©ν–₯을 κ²°μ •ν•˜λŠ” μ†μ„±μž…λ‹ˆλ‹€.


κ°€λ‘œ row (κΈ°λ³Έκ°’) row-reverse
μ„Έλ‘œ column column-reverse



4




  • μ€„λ„˜κΉ€ 처리 μ„€μ •

flex-wrap: ;

μ»¨ν…Œμ΄λ„ˆμ— μ•„μ΄ν…œλ“€μ„ ν•œ 쀄에 담을 곡간이 λ”λŠ” 없을 λ•Œ

μ€„λ°”κΏˆμ„ μ–΄λ–»κ²Œ 할지 κ²°μ •ν•˜λŠ” μ†μ„±μž…λ‹ˆλ‹€.


  1. nowrap (κΈ°λ³Έκ°’)

μ€„λ°”κΏˆμ„ ν•˜μ§€ μ•Šκ³ , λ„˜μΉ˜λ©΄ μ•„μ΄ν…œμ΄ μ‚μ Έλ‚˜κ°‘λ‹ˆλ‹€.


  1. wrap

μ€„λ°”κΏˆμ„ ν•©λ‹ˆλ‹€.


  1. wrap-reverse

μ€„λ°”κΏˆμ„ ν•˜λ©° μ•„μ΄ν…œμ„ μ—­μˆœμœΌλ‘œ λ°°μΉ˜ν•©λ‹ˆλ‹€.


  1. flex-flow

flex-direction κ³Ό flex-wrap 을 ν•œλ²ˆμ— 지정할 수 μžˆλŠ” 단좕 μ†μ„±μœΌλ‘œ,

flex-direction, flex-wrap 의 순으둜 ν•œ μΉΈ λ–Όκ³  써주면 λ©λ‹ˆλ‹€.

ex) flex-flow: row wrap;

5

  • 메인좕 λ°©ν–₯ μ •λ ¬

justify-content: ;

메인좕 λ°©ν–₯으둜 μ•„μ΄ν…œλ“€μ„ μ •λ ¬ν•˜λŠ” μ†μ„±μž…λ‹ˆλ‹€.


  1. flex-start (κΈ°λ³Έκ°’)

μ‹œμž‘μ λΆ€ν„° μ•„μ΄ν…œλ“€μ„ μ •λ ¬ν•©λ‹ˆλ‹€.

row 배치일 λ•ŒλŠ” μ™Όμͺ½, column 배치일 λ•ŒλŠ” μœ„λΆ€ν„° λ°°μΉ˜λ©λ‹ˆλ‹€.


  1. flex-end

끝점뢀터 μ•„μ΄ν…œλ“€μ„ μ •λ ¬ν•©λ‹ˆλ‹€.

row 배치일 λ•ŒλŠ” 였λ₯Έμͺ½, column 배치일 λ•ŒλŠ” μ•„λž˜λΆ€ν„° λ°°μΉ˜λ©λ‹ˆλ‹€.


  1. center

μ•„μ΄ν…œλ“€μ„ κ°€μš΄λ°λ‘œ μ •λ ¬ν•©λ‹ˆλ‹€.


  1. space-between

μ•„μ΄ν…œλ“€μ˜ β€˜μ‚¬μ΄μ—β€™ κ· μΌν•œ 간격을 λ§Œλ“€μ–΄ μ€λ‹ˆλ‹€.


  1. space-around

μ•„μ΄ν…œλ“€μ˜ β€˜λ‘˜λ ˆμ—β€™ κ· μΌν•œ 간격을 λ§Œλ“€μ–΄ μ€λ‹ˆλ‹€.


  1. space-evenly

μ•„μ΄ν…œλ“€μ˜ β€˜μ‚¬μ΄μ™€ μ–‘ 끝에’ κ· μΌν•œ 간격을 λ§Œλ“€μ–΄ μ€λ‹ˆλ‹€.

IE와 엣지(Edge)μ—μ„œλŠ” μ§€μ›λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

6

7


  • μˆ˜μ§μΆ• λ°©ν–₯ μ •λ ¬

align-items: ;

justify-content 의 수직 λ°©ν–₯의 정렬을 μ„€μ •ν•˜λŠ” μ†μ„±μž…λ‹ˆλ‹€.


  1. stretch (κΈ°λ³Έκ°’)

μ•„μ΄ν…œλ“€μ΄ μˆ˜μ§μΆ• λ°©ν–₯으둜 λκΉŒμ§€ λŠ˜μ–΄λ‚©λ‹ˆλ‹€.


  1. flex-start

μ•„μ΄ν…œλ“€μ„ μ‹œμž‘μ μœΌλ‘œ μ •λ ¬ν•©λ‹ˆλ‹€.

row 배치일 λ•ŒλŠ” μœ„, column 배치일 λ•ŒλŠ” μ™Όμͺ½λΆ€ν„° λ°°μΉ˜λ©λ‹ˆλ‹€.


  1. flex-end

μ•„μ΄ν…œλ“€μ„ 끝점으둜 μ •λ ¬ν•©λ‹ˆλ‹€.

row 배치일 λ•ŒλŠ” μ•„λž˜, column 배치일 λ•ŒλŠ” 였λ₯Έμͺ½λΆ€ν„° λ°°μΉ˜λ©λ‹ˆλ‹€.


  1. center

μ•„μ΄ν…œλ“€μ„ κ°€μš΄λ°λ‘œ μ •λ ¬ν•©λ‹ˆλ‹€.


  1. baseline

μ•„μ΄ν…œλ“€μ„ ν…μŠ€νŠΈ 베이슀라인 기쀀을 μ •λ ¬ν•©λ‹ˆλ‹€.


8



κ·Έλž˜μ„œ,

justify-content: center;

align-item: center;

λ₯Ό ν•΄μ£Όλ©΄ μ•„μ΄ν…œμ„ κ°€μš΄λ°μ— λ°°μΉ˜μ‹œν‚€λŠ” 것도 ꡉμž₯히 μ‰½μŠ΅λ‹ˆλ‹€.


μ§ !

9


2. μ»¨ν…Œμ΄λ„ˆμ— μ μš©ν•˜λŠ” 속성


  • κΈ°λ³Έ μ˜μ—­

flex-basis: ;

Flex μ•„μ΄ν…œμ˜ κΈ°λ³Έ 크기λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€.

flex-direction이 row 일 λ•ŒλŠ” λ„ˆλΉ„, column 일 λ•ŒλŠ” 높이λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€.


  1. auto (κΈ°λ³Έκ°’)

ν•΄λ‹Ή μ•„μ΄ν…œμ˜ width 값을 μ‚¬μš©ν•©λ‹ˆλ‹€.

width 값이 μ—†λ‹€λ©΄ μ»¨ν…μΈ μ˜ 크기λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.


  1. 0; %; px, rem λ‹¨μœ„

각쒅 λ‹¨μœ„μ˜ 수둜 μ„€μ • ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


  1. content

μ»¨ν…μΈ μ˜ 크기둜 μ„€μ •ν•˜λŠ” κ²ƒμœΌλ‘œ,

width λ₯Ό λ”°λ‘œ μ„€μ •ν•˜μ§€ μ•Šμ€ κ²½μš°μ™€ κ°™μŠ΅λ‹ˆλ‹€.




  • μœ μ—°ν•˜κ²Œ 늘리기

flex-grow: ;

flex-basis: ; 의 값보닀 컀질 수 μžˆλŠ”μ§€ κ²°μ •ν•˜λŠ” μ†μ„±μž…λ‹ˆλ‹€.

flex-grow μ—λŠ” μˆ«μžκ°’μ΄ λ“€μ–΄κ°€λŠ”λ°, λͺ‡μ΄λ“  0보닀 큰 값이 μ…‹νŒ…λœλ‹€λ©΄

ν•΄λ‹Ή μ•„μ΄ν…œμ΄ Flexible λ°•μŠ€λ‘œ λ³€ν•˜κ³ 

μ›λž˜μ˜ 크기보닀 μ»€μ Έμ„œ 빈 곡간을 λ©”μš°κ²Œ λ©λ‹ˆλ‹€.

기본값이 0 이기 λ•Œλ¬Έμ— λ”°λ‘œ μ…‹νŒ…ν•˜κΈ° μ „κΉŒμ§€λŠ” μ•„μ΄ν…œμ΄ λŠ˜μ–΄λ‚˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ—¬κΈ°μ„œ 숫자의 μ˜λ―ΈλŠ” μ•„μ΄ν…œλ“€μ˜ flex-basis λ₯Ό μ œμ™Έν•œ μ—¬λ°± 뢀뢄을

flex-grow 에 μ§€μ •λœ 숫자의 λΉ„μœ¨λ‘œ λ‚˜λˆ„μ–΄ 가진닀고 μƒκ°ν•˜λ©΄ λ©λ‹ˆλ‹€.



10



  • μœ μ—°ν•˜κ²Œ 쀄이기

flex-shrink: ;

flex-basis: ; 의 값보닀 μž‘μ•„μ§ˆ 수 μžˆλŠ”μ§€ κ²°μ •ν•˜λŠ” μ†μ„±μž…λ‹ˆλ‹€.

flex-shrink μ—λŠ” μˆ«μžκ°’μ΄ λ“€μ–΄κ°€λŠ”λ°, λͺ‡μ΄λ“  0보닀 큰 값이 μ…‹νŒ…λœλ‹€λ©΄

ν•΄λ‹Ή μ•„μ΄ν…œμ΄ Flexible λ°•μŠ€λ‘œ λ³€ν•˜κ³  μ›λž˜μ˜ flex-basis 보닀 μž‘μ•„μ§‘λ‹ˆλ‹€.

기본값이 1 이기 λ•Œλ¬Έμ— λ”°λ‘œ μ…‹νŒ…ν•˜μ§€ μ•Šμ•„λ„ μ•„μ΄ν…œμ΄ flex-basis 보닀 μž‘μ•„μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.



.item:nth-child(1) {
            flex-grow: 1;
}

.item:nth-child(2) {
            flex-shrink: 0;
            width: 100px;
}

κ·Έλž˜μ„œ μœ„μ™€ 같은 μ…‹νŒ…μ„ μ μš©ν•˜κ²Œ 되면,



11


μ΄λ ‡κ²Œ λ‘λ²ˆμ§Έ μ•„μ΄ν…œμ€ flex-shrink κ°€ 0 μ΄λ―€λ‘œ

100px 둜 μ‚¬μ΄μ¦ˆκ°€ κ³ μ •λ˜κ³ 

첫번쨰 μ•„μ΄ν…œμ€ flex-grow κ°€ 1의 값을 κ°€μ§€λ―€λ‘œ

남은 μ˜μ—­μ„ λͺ¨λ‘ μ±„μš°κ²Œ λ©λ‹ˆλ‹€.

μ›ΉνŽ˜μ΄μ§€μ˜ μ‚¬μ΄μ¦ˆλ₯Ό 아무리 쀄여도


12


이와 같이 100px 은 고정적이고

flex-grow: 1; 의 값을 κ°–λŠ” μ•„μ΄ν…œμ΄ μœ λ™μ μœΌλ‘œ 남은 μ˜μ—­μ„ μ±„μš°κ²Œ λ©λ‹ˆλ‹€.




  • flex

flex-grow, flex-shrink, flex-basis λ₯Ό ν•œ λ²ˆμ— μ“Έ 수 μžˆλŠ” μΆ•μ•½ν˜• μ†μ„±μž…λ‹ˆλ‹€.

이 μ„Έ 속성듀은 μ„œλ‘œ 관련이 깊기 λ•Œλ¬Έμ—, 이 μΆ•μ•½ν˜•μ„ μ“°λŠ” μͺ½μ΄ νŽΈλ¦¬ν•©λ‹ˆλ‹€.



	flex: 1;
	/* flex-grow: 1; flex-shrink: 1; flex-basis: 0%; */

	flex: 1 1 auto;
	/* flex-grow: 1; flex-shrink: 1; flex-basis: auto; */

	flex: 1 500px;
	/* flex-grow: 1; flex-shrink: 1; flex-basis: 500px; */

μœ„μ™€ 같이 μΆ•μ•½ν•˜μ—¬ μ‚¬μš©ν•©λ‹ˆλ‹€.

μ°Έκ³ ν•  점은, flex: 1; 처럼 flex-basis λ₯Ό μƒλž΅ν•˜λ©΄ flex-basis의 값은 0이 λ©λ‹ˆλ‹€.