Front-end/CSS

[CSS3]Position

์œค๋ฏผ_ 2022. 3. 20. 19:31

๐Ÿค”Position์ด๋ž€?

์š”์†Œ๋ฅผ ์›ํ•˜๋Š” ์œ„์น˜์— ์ž์œ ๋กญ๊ฒŒ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” property์ด๋‹ค.

Position์—๋Š” 5๊ฐ€์ง€์˜ ์ข…๋ฅ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค. 

1. static

2. relative

3. absolute

4. fixed

5. sticky

(sticky๋Š” ์ง€์›ํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋งŽ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด์šฉ์„ ์Šคํ‚ตํ•˜๊ฒ ๋‹ค.)

 

โœจposition๊ณต๋ถ€ ์‹œ ์ค‘์š” ํฌ์ธํŠธ

โ— 1. ๋‚ด๊ฐ€ ์–ด๋–ค ์ข…๋ฅ˜์˜ position์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ 

โ— 2. ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” position์€ ๋ฌด์—‡์„ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š”์ง€

๊ธฐ์ค€์ ์ด ๊ฐ๊ฐ์˜ ํฌ์ง€์…˜ type์— ๋”ฐ๋ผ ๋งŽ์ด ๋‹ฌ๋ผ์ง„๋‹ค.


๐Ÿ’ก Type 1. static

static์€ ๋ชจ๋“  ์š”์†Œ์˜ ๊ธฐ๋ณธ position๊ฐ’์ด๋‹ค.

๋ชจ๋“  ์š”์†Œ์˜ ํฌ์ง€์…˜์€ ๋ชจ๋‘ static์œผ๋กœ ์„ค์ •๋˜์–ด์žˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ์š”์†Œ์˜ ์ƒํƒœ๋Š” static์ด๋‹ค.

๐Ÿ’ก Type 2. relative

relative ์ด๋™์˜ ๊ธฐ์ค€์ ์€ ์ž๊ธฐ ์ž์‹ ์ด ๋ณธ๋ž˜ ์žˆ๋˜ ์ž๋ฆฌ์ด๋‹ค.(๋ณธ๋ž˜ ์žˆ๋˜ ์ž๋ฆฌ์—์„œ ์œ„, ์•„๋ž˜, ์ขŒ, ์šฐ๋กœ ์›€์ง์ผ ์ˆ˜ ์žˆ๋‹ค.) 

์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ค ์š”์†Œ์— relative๊ฐ’์„ ๋ถ€์—ฌํ•˜๋ฉด, float๋•Œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ถ€๋ชจ ์š”์†Œ๋ฅผ ๋– ๋‚˜ ์š”์†Œ๊ฐ€ ๋ถ•๋œจ๊ฒŒ๋œ๋‹ค.

ํ•˜์ง€๋งŒ float์™€ ๋‹ค๋ฅด๊ฒŒ layout์ด ๋ถ•๊ดด๋˜๊ฑฐ๋‚˜, ๋‹ค๋ฅธ ์ฃผ๋ณ€ ์š”์†Œ์— ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š๋Š”๋‹ค.

๊ทธ ์ด์œ ๋Š” relative๋Š” float์™€ ๋™์ผํ•˜๊ฒŒ ๋ถ€๋ชจ๋กœ๋ถ€ํ„ฐ ๋ถ•๋œจ๊ฒŒ ๋˜์ง€๋งŒ ๋ณธ๋ž˜์˜ ์ž๊ธฐ ์œ„์น˜๋Š” ๊ธฐ์–ต์„ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋˜ํ•œ ๋ถ€๋ชจ, ํ˜•์ œ ์š”์†Œ๋“ค๋„ relative์š”์†Œ์˜ ์œ„์น˜๋ฅผ ์ธ์ง€ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— layout๋ถ•๊ดด๊ฐ€ ์ผ์–ด๋‚˜์ง€ ์•Š๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค!

๐Ÿ’ก Type 3. absolute

absolute๋„ float์™€ ๋™์ผํ•˜๊ฒŒ ๋ถ€๋ชจ ์š”์†Œ๋กœ๋ถ€ํ„ฐ ๋ถ•๋œจ๊ฒŒ ๋˜๋ฉด์„œ display๊ฐ’์ด block์œผ๋กœ ์„ค์ •๋œ๋‹ค.

absolute๋Š” float์™€ ๋งค์šฐ ๋น„์Šทํ•œ ๋ชจ์Šต์„ ๋ณด์—ฌ์ค€๋‹ค.

๋ถ€๋ชจ์˜ ์š”์†Œ๋กœ๋ถ€ํ„ฐ ๋ถ•๋œจ๊ธฐ๋˜๋ฉฐ block์ด์ง€๋งŒ ๊ธธ๋ง‰์„ ํ•˜์ง€ ๋ชปํ•˜๋Š” block์ด ๋œ๋‹ค.

 

ํ•˜์ง€๋งŒ ๋น„์Šทํ•œ ์ด ๋‘˜์—๊ฒŒ๋„ ๋‹ค๋ฅธ ํ•œ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. 

๋ฐ”๋กœ inline contents๊ฐ€ ๋‹ค๋ฅด๋‹ค๋Š” ์ ์ด๋‹ค.

float ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” inline contents๊ฐ€ float ๋œ ์š”์†Œ์˜ ์กด์žฌ๋ฅผ ์•Œ์•„ ์š”์†Œ๋ฅผ ํ”ผํ•ด ๋‹ค๋…”์ง€๋งŒ.(ํ•˜๋‹จ)

Inline ์ปจํ…์ธ ์— float์ ์šฉ์‹œ layout ๋ชจ์Šต, layout์ด ๋ถ•๊ดด ๋˜์–ด ๋ฒ„๋ ธ๋‹ค...

absolute๋Š” ํ˜ผ์ž ๋ถ€์–ด์„œ contents์— ๊ด€์—ฌํ•˜์ง€ ์•Š๋Š” ๋ชจ์Šต์„ ๋ณด์—ฌ์ค€๋‹ค.(ํ•˜๋‹จ)

Inline ์ปจํ…์ธ ์— absolute ์ ์šฉ์‹œ layout ๋ชจ์Šต

๊ทธ๋Ÿผ ์ด์ œ absolute๊ฐ€ ๋ฌด์—‡์„ ๊ธฐ์ค€์ ์œผ๋กœ ์‚ผ์•„ ์œ„์น˜๋ฅผ ์›€์ง์ด๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ๋‹ค.

absolute๋Š” ํŠน์ดํ•˜๊ฒŒ ์ž์‹ ์ด ๊ธฐ์ค€์œผ๋กœ ์‚ผ๊ณ  ์‹ถ์€ ๊ธฐ์ค€์ ์„ ์ƒˆ๋กœ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

float๋Š” ๋ถ€๋ชจ ์š”์†Œ๋กœ๋ถ€ํ„ฐ ์ข…์†๋˜์–ด ์žˆ์—ˆ์ง€๋งŒ,

absolute ๊ฐ™์€ ๊ฒฝ์šฐ์—” ์ž์‹ ์„ ๊ฐ์‹ธ๊ณ  ์žˆ๋Š” ์กฐ์ƒ ์š”์†Œ๋“ค ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด ๊ธฐ์ค€์œผ๋กœ ์žก์„ ์ˆ˜ ์žˆ๋‹ค.

์„ ํƒ์˜ ๊ธฐ์ค€(์กฐ๊ฑด)์€ position์ด static์ด ์•„๋‹Œ ์š”์†Œ์ผ ๊ฒฝ์šฐ ๊ทธ ์š”์†Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ณธ์ธ์„ ์œ„์น˜์‹œํ‚จ๋‹ค.

(์กฐ์ƒ ์š”์†Œ๋Š” ๋Œ€๋ถ€๋ถ„ ์ฃผ๋ณ€ ์š”์†Œ์— ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š๋Š” relative๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.)

.grandparent{
  width: 800px;
  background-color: darkgrey;
  position: relative;
  margin: 0;
  height:600px ;
}

.red {
  background-color: #ff4949;
  position: absolute;
  bottom: 20px;
  right:20px;
}

.yellow {
  background-color: #ffc82c;
}

.blue {
  background-color: #0066ff;
}

์กฐ์ƒ์˜ ์š”์†Œ ์•ˆ์—์„œ ๋นจ๊ฐ„์ƒ‰ ์š”์†Œ๊ฐ€ ์•„๋ž˜๋กœ 20px ์˜ค๋ฅธ์ชฝ์œผ๋กœ 20px ์›€์ง์ธ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

๐Ÿ’กType 4. fixed

absolute์™€ fixed๋Š” ๋™์ผํ•œ ํ˜„์ƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

display๊ฐ€ block, ๊ธธ๋ง‰ ํ•  ์ˆ˜ ์—†๋Š” block, ์ง‘ ๋‚˜๊ฐ„ ์ž์‹์ด ๋œ๋‹ค๋Š” ๊ฒƒ ๋“ฑ ๋™์ผํ•œ ํ˜„์ƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ

๋‘˜์˜ ๊ฐ€์žฅ ํฐ ๋‹ค๋ฅธ ์ ์€ ๋ฐ”๋กœ ๊ธฐ์ค€์ ์ด๋‹ค.

fixed๋Š” ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณธ์ธ์˜ ๊ธฐ์ค€์ ์ด ์กด์žฌํ•˜๋Š”๋ฐ,

๋ฐ”๋กœ viewport(๋ธŒ๋ผ์šฐ์ € ์ฐฝ์˜ ์ „์ฒด ํฌ๊ธฐ) ์‚ฌ์ด์ฆˆ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž์‹ ์„ ์œ„์น˜์‹œํ‚จ๋‹ค.

(ํ•ธ๋“œํฐ ๊ธฐ์ข…๋งˆ๋‹ค ์„œ๋กœ ๋‹ค๋ฅธ viewport๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ฐค๋Ÿญ์‹œ, ์•„์ดํฐ ํ™”๋ฉด ์‚ฌ์ด์ฆˆ์˜ ์ฐจ์ด์  ๋“ฑ)

.grandparent{
  width: 800px;
  background-color: darkgrey;
  position: relative;
  margin: 0;
  height:600px ;
}

.red {
  background-color: #ff4949;
  position: fixed;
  bottom: 0px;
  right:0px;
}

.yellow {
  background-color: #ffc82c;
}

.blue {
  background-color: #0066ff;
}

viewport์—์„œ ๋นจ๊ฐ„์ƒ‰ ์š”์†Œ๊ฐ€ ๋ฐ”๋‹ฅ์— ๋ฐ€์ฐฉํ•œ(0px) ์˜ค๋ฅธ์ชฝ ๋ฐ€์ฐฉํ•œ(0px) ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

โ—โ— z-index โ—โ—

position ๋œ ์š”์†Œ๋“ค์˜ ์ˆ˜์ง๋ฐฉํ–ฅ์œผ๋กœ ์จ์˜ level ์œ„์น˜๋ฅผ ์•Œ๋ ค์ค€๋‹ค.

position์€ static์„ ์ œ์™ธํ•œ ์กฐ๊ฑด๋“ค์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋ชจ๋‘ ์š”์†Œ๋ฅผ ๋ถ• ๋„์šฐ๊ฒŒ ๋œ๋‹ค.

์ด๋•Œ ์ˆ˜์ง๋ฐฉํ–ฅ์œผ๋กœ ๋ถ•๋œจ๋ฉฐ z-index๋ผ๋Š” level์ด ์ƒ๊ธด๋‹ค.

์š”์†Œ ๊ฐ„์˜ ์œ„์น˜๊ฐ€ ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ํ†ตํ•ด css๋ฅผ ์กฐ์ ˆํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

'Front-end > CSS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[CSS3]Media Query(๋ฐ˜์‘ํ˜• ์›น)  (0) 2022.03.27
[CSS3]Flexbox  (0) 2022.03.26
[CSS3]Float๋ž€? / Layout ์˜ค๋ฅ˜ ์‹œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•  (0) 2022.03.14
[CSS3]BOX (Block,Inline,Inline Block)  (0) 2022.03.13
[CSS3] CSS๋ž€?  (0) 2021.11.04