[HTML/CSS] Portfolio - flex์™€ position

yoorimseoยท2022๋…„ 10์›” 8์ผ
1
post-thumbnail

๐Ÿ’ก ์˜ค๋Š˜ ๋งŒ๋“ค์–ด ๋ณผ ๊ฒƒ!

๋ฐ”๋กœ ๋งŒ๋“ค๊ธฐ ๋ณด๋‹ค๋Š”, ๋‹ค์Œ์˜ ๊ฐœ๋…๋“ค์„ ์ตํžˆ๊ณ  ๊ฐ€๋ฉด ์ฝ”๋“œ ์ž‘์„ฑ์ด ๋” ์ˆ˜์›”ํ•  ๊ฒƒ์ด๋‹ค!

1. flex


flex๋Š” ๋ถ€๋ชจ ์š”์†Œ(container)์™€ ์ž์‹ ์š”์†Œ(items)๊ฐ„์˜ ๊ด€๊ณ„๋กœ๋งŒ ์ •๋ ฌํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

container์—๋Š” display, flex-direction, justify-content, align-items ๋“ฑ์˜ ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ 
items์—๋Š” flex-grow, flex-shirnk, flex-basis ๋“ฑ์˜ ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

flex-grow๋Š” item์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํฌ๊ธฐ๋ฅผ ์ž์‹ ์˜ ํฌ๊ธฐ๋กœ ๊ฐ€์ ธ๊ฐ€๋Š” ๊ฒƒ์ด๋‹ค.
flex-box๋Š” item์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์ด ๋ชจ์ž๋ฅด๋ฉด ๋‚ด๋ถ€ ์ปจํ…์ธ ์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ธ๋‹ค.
flex-shrink = 1์€ item์ด ๋ชจ๋‘ ๊ฐ™์€ ๋น„์œจ์ด ๋œ๋‹ค.

ํ•˜

2. image๋ฅผ ์™ผ์ชฝ์œผ๋กœ ์˜ฎ๊ธฐ๋ ค๋ฉด? - image๋ฅผ ์˜ฎ๊ธฐ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•

view port๋Š” ์›น ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์˜์—ญ์„ ์˜๋ฏธํ•œ๋‹ค.

2-1. negative margin


negative margin์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

margin-left: -50px;

2-2. position: relative;


position: relative; ๊ฐ’์„ ์ฃผ๋ฉด ํ˜„์žฌ ์ž๋ฆฌ๋ฅผ ๊ธฐ์–ตํ•˜๊ณ  ์›€์ง์ธ๋‹ค.
๋ถ€๋ชจ ์š”์†Œ์— position: relative;๋ฅผ ์ฃผ๋ฉด, ์ž์‹ ์š”์†Œ๋Š” ๊ฐ€๊นŒ์šด ๋ถ€๋ชจ ๊ธฐ์ค€์˜ position ๊ฐ’์œผ๋กœ ์›€์ง์ธ๋‹ค.

position: relative;
left: -50px;

3. position: absolute์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž!


div ์š”์†Œ์— position: absolute;๋ฅผ ์ฃผ๋ฉด ์ปจํ…์ธ  ํฌ๊ธฐ๋งŒํผ ์ค„์–ด๋“ ๋‹ค.
์ฐธ๊ณ ๋กœ, inline ์š”์†Œ์— position: absolute;๋ฅผ ์ฃผ๋ฉด block ์š”์†Œ๊ฐ€ ๋œ๋‹ค.


left์™€ right์— 0์„ ์ฃผ๋ฉด ๋งˆ์น˜ width: auto;์ฒ˜๋Ÿผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์„ ๋ชจ๋‘ ์ฐจ์ง€ํ•˜๊ฒŒ ๋œ๋‹ค.


left์™€ right์— 0์„ ์ค€ ์ƒํƒœ์—์„œ margin: 0 auto;๊ฐ€ ์ ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.


top๊ณผ bottom, left์™€ right์— ๋ชจ๋‘ 0 ๊ฐ’์„ ์ฃผ๋ฉด ์œ„์•„๋ž˜๋กœ ๊ฝ‰ ์ฐจ๊ฒŒ ๋œ๋‹ค.
inset: 0;์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒํ•˜์ขŒ์šฐ์— 0 ๊ฐ’์„ ์ฃผ์—ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ต์Šคํ”Œ๋กœ์–ด ์ง€์›์ด ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ์ฃผ์˜ํ•˜์ž.

3. ์œ„์˜ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•˜์—ฌ Portfolio๋ฅผ ๋งŒ๋“ค ๋•Œ ์ ์šฉํ•ด๋ณด์ž!

3-1. display: flex;


์ปจํ…Œ์ด๋„ˆ ์š”์†Œ์— display ์†์„ฑ์œผ๋กœ flex ๊ฐ’์„ ์ฃผ๋ฉด, ์•„์ดํ…œ ์š”์†Œ๋“ค์ด ๊ฐ€๋กœ๋กœ ์ •๋ ฌ๋จ๊ณผ ๋™์‹œ์— ๋„ˆ๋น„๊ฐ€ ์ปจํ…์ธ  ์‚ฌ์ด์ฆˆ์— ๋งž๊ฒŒ ์ค„์–ด๋“ค๊ฒŒ ๋œ๋‹ค.

3-2. flex-shrink: 0;


header์˜ h1 ์š”์†Œ์— 'START YOUR PORTFOLIO PROJECT'๋ฅผ ์ž‘์„ฑํ•˜๊ณ  width: 26%;๋ฅผ ์ฃผ์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  pํƒœ๊ทธ์— lorem ํ…์ŠคํŠธ๋ฅผ ๋„ฃ์—ˆ๋‹ค.
pํƒœ๊ทธ์— lorem ํ…์ŠคํŠธ๋ฅผ ๋„ฃ์œผ๋‹ˆ pํƒœ๊ทธ ์•ˆ์˜ ์ปจํ…์ธ  ๋‚ด์šฉ์ด ๋งŽ์•„ h1 ํƒœ๊ทธ์˜ ๋„“์ด๊ฐ€ ์ฒ˜์Œ๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ค„์–ด๋“  ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

โ“ ์—ฌ๊ธฐ์„œ ๋‹ค์‹œ ์›๋ž˜ ๋„“์ด๋ฅผ ๊ฐ–๊ฒŒ ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?

h1 ์š”์†Œ์— flex-shrink: 0;๋ฅผ ์ฃผ๋ฉด ์ž๋™์œผ๋กœ ๋„ˆ๋น„๊ฐ€ ์ถ•์†Œ๋˜์ง€ ์•Š๊ณ  ๋‚ด๊ฐ€ ์„ค์ •ํ•œ ๋„ˆ๋น„์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ–๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.
flex-shrink๋ฅผ ์ ์šฉํ•˜๋ฉด ๋‚˜์ค‘์— pํƒœ๊ทธ ์•ˆ์˜ ์ปจํ…์ธ ๊ฐ€ ๋Š˜์–ด๋‚˜๋”๋ผ๋„ ํ”ผํ•ด๋ฅผ ๋ฐ›์ง€ ์•Š๊ฒŒ ๋œ๋‹ค.

3-3. flex-grow: 1;


๋…ธ๋ž€์ƒ‰ ๋ฐฐ๊ฒฝ์˜ Cover์™€ ํŒŒ๋ž€์ƒ‰ ๋ฐฐ๊ฒฝ์˜ Contents๋ฅผ ์‚ดํŽด๋ณด์ž.
display: flex; ์†์„ฑ์„ ์ฃผ์–ด ๋„ˆ๋น„๊ฐ€ ์ปจํ…์ธ ์˜ ํฌ๊ธฐ์— ๋งž๊ฒŒ ์ค„์–ด๋“  ๋ชจ์Šต์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
(Cover์˜ ๊ฒฝ์šฐ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ h1 ์š”์†Œ์ฒ˜๋Ÿผ width: 26%;์™€ flex-shrink: 0; ๊ฐ’์„ ์ค€ ์ƒํƒœ์ด๋‹ค.)

โ“ ์—ฌ๊ธฐ์„œ Contents๊ฐ€ Cover๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์˜์—ญ์„ ์ฐจ์ง€ํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?


flex-grow: 1;์„ ์ฃผ์–ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋‚˜๋จธ์ง€ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค!

3-4. ๊ทธ ๋ฐ–์˜ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ์ !

  • z-index๋Š” global(์ „์ฒด ํŽ˜์ด์ง€) ๊ธฐ์ค€์œผ๋กœ ๋™์ž‘๋œ๋‹ค.
  • z-index๋Š” poaition์ด static์ด ์•„๋‹Œ ๊ฐ’์ด์–ด์•ผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋ฏธ์„ธํ•˜๊ฒŒ ์—ฌ๋ฐฑ์ด ์ƒ๊ธฐ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๊ฒƒ์„ ์ดˆ๊ธฐํ™” ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ด๋ฏธ์ง€์— vertical-line: top;์„ ์ฃผ๋ฉด ๋œ๋‹ค.
  • ๊ฐ€์ƒ์š”์†Œ ::before๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ inline ์†์„ฑ์ด๋‹ค.
profile
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ฅผ ๋ชฉํ‘œ๋กœ ํ•˜๋ฃจํ•˜๋ฃจ ์„ฑ์žฅ์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค :-)

0๊ฐœ์˜ ๋Œ“๊ธ€