๐ŸŒท CSS(1) postion, CSS ์„ค๊ณ„

Lee Jooamยท2022๋…„ 4์›” 22์ผ
0

๋„ˆ๋ฌด ๋Šฆ๊ธฐ ์ „์—...

์˜์‹์˜ ํ๋ฆ„์„ ๋”ฐ๋ผ ๋งˆํฌ์—…์„ ์ง„ํ–‰ํ•˜๊ณ  ๋˜ ๊ทธ๊ฒƒ์„ ์Šคํƒ€์ผ๋ง ํ•˜๋‹ค ๋ณด๋ฉด ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋Š˜์–ด๋‚˜๋Š” ํ…์ŠคํŠธ์˜ ๋ผ์ธ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ค‘๋ณต๋˜๋Š” ์†์„ฑ๋“ค, copy & paste, ์–ด๋””์„œ ์ ์šฉ๋˜์—ˆ๋Š”์ง€ ๊ฐ€๋Š ํ•  ์ˆ˜ ์—†์ด ๊นŠ์€ ์Šคํƒ€์ผ๋ง ๊ณ„์ธต.

๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์™ธ์— ๋งˆํฌ์—…๊ณผ ์Šคํƒ€์ผ๋ง๋„ ์„ค๊ณ„๊ฐ€ ์ค‘์š”ํ•˜๋‹ค. ์ด๊ฒƒ์€ ์‹œ์Šคํ…œ์˜ ๋ฌธ์ œ๋„ ๊ทธ๋ ‡์ง€๋งŒ ๊ทธ๊ฒƒ์„ ๊ด€๋ฆฌํ•˜๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ๊ฐ•ํ•œ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

๐Ÿฆข position

์ตœ๊ทผ CSS๋ฅผ ๋ฐ”๋ผ๋ณด๋Š” ์ƒˆ๋กœ์šด ๊ด€์ ์ด ์ƒ๊ฒผ๋‹ค. ํ™”๋ฉด์— ๋ Œ๋”๋ง๋˜๋Š” ์š”์†Œ๋“ค์ด 3๊ณ„์ธต์„ ๊ฐ€์ง„๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

normal flow => float => position ์ˆœ์„œ๋กœ ๋•…์—์„œ ํ•˜๋Š˜๋กœ ์˜ฌ๋ผ๊ฐ„๋‹ค๋Š” ๊ด€์ ์ธ๋ฐ ์ •๋ง ๊ทธ๋ ‡๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

์ตœ๊ทผ์—๋Š” flex๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•ด์„œ float์„ ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ ์„ธ๋ฐ€ํ•œ ๋ฐฐ์น˜๋ฅผ ์œ„ํ•ด ์•Œ๊ณ ๋Š” ์žˆ์–ด์•ผ๊ฒ ๋‹ค.

1. static

position์˜ ๊ธฐ๋ณธ ๊ฐ’์ด๋‹ค. top, right, bottom, left ์†์„ฑ๊ณผ z-index ์†์„ฑ์ด ์˜ํ–ฅ์„ ์ฃผ์ง€ ๋ชปํ•œ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋ฌธ์„œ์˜ ํ๋ฆ„์— ๋”ฐ๋ผ ๋ฐฐ์น˜๋œ๋‹ค.

2. relative

๋ฌธ์„œ์˜ ํ๋ฆ„์— ๋”ฐ๋ผ ์Œ“์ธ ์ž๊ธฐ ์ž์‹ ์„ ๊ธฐ์ค€์œผ๋กœ ์œ„์น˜๋ฅผ ์žฌ์กฐ์ •ํ•œ๋‹ค. top, right, bottom, left ์†์„ฑ์ด ์ž‘์šฉํ•œ๋‹ค.

๋ฌธ์„œ์˜ ํ๋ฆ„์— ๋”ฐ๋ผ ์œ„์น˜๊ฐ€ ์กฐ์ •๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ž์‹ ์˜ ์›๋ž˜ ์œ„์น˜์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๋™์„ฑ์ด ์žˆ๋‹ค๋ฉด relative๋กœ ์กฐ์ •ํ•œ ์œ„์น˜๋„ ๊ณ„์† ์žฌ์กฐ์ •ํ•ด์•ผํ•œ๋‹ค.

์ž์‹ ์˜ ์› ์œ„์น˜์— ๋ถ„์‹ ์„ ๋†“๊ณ  ๊ทธ๊ฒƒ์„ ๊ธฐ์ค€์œผ๋กœ ์›€์ง์—ฌ์ง„๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ํŽธํ•˜๋‹ค.

3. absolute

์ผ๋ฐ˜์ ์ธ ๋ฌธ์„œ์˜ ํ๋ฆ„์—์„œ ๋ฒ—์–ด๋‚œ๋‹ค. ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์œ„์น˜ ์ง€์ • ์š”์†Œ(position์ด static์ด ์•„๋‹Œ ์š”์†Œ)์ธ ์กฐ์ƒ์„ ๊ธฐ์ค€์œผ๋กœ ์œ„์น˜๊ฐ€ ์กฐ์ •๋œ๋‹ค.

display๊ฐ€ inline-block์œผ๋กœ ์ง€์ •๋˜๋ฉฐ ํฌ๊ธฐ๋ฅผ ๋”ฐ๋กœ ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ๋‚ด๋ถ€ ์ปจํ…์ธ ์˜ ํฌ๊ธฐ ๋งŒํผ ์ค„์–ด๋“ ๋‹ค.

์œ„์น˜๋ฅผ ์ง€์ •ํ•  ๋•Œ ๋ถ€์—ฌ๋œ margin ๊ฐ’์„ ๊ณ ๋ คํ•ด์„œ ์ง€์ •๋œ๋‹ค.

4. fixed

absolute์ฒ˜๋Ÿผ ์ผ๋ฐ˜์ ์ธ ํ๋ฆ„์—์„œ ๋ฒ—์–ด๋‚œ๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ์ค€์ด ๋ทฐํฌํŠธ๊ฐ€ ๋œ๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ display๊ฐ€ inline-block์œผ๋กœ ์ง€์ •๋˜๋ฉฐ ํฌ๊ธฐ๋ฅผ ๋”ฐ๋กœ ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ๋‚ด๋ถ€ ์ปจํ…์ธ ์˜ ํฌ๊ธฐ ๋งŒํผ ์ค„์–ด๋“ ๋‹ค.

5. sticky

์ดˆ๊ธฐ์—๋Š” ์ผ๋ฐ˜์ ์ธ ํ๋ฆ„์— ๋”ฐ๋ผ ๋ฐฐ์น˜ํ•˜๊ณ  ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์Šคํฌ๋กค ๊ฐ€๋Šฅ ์กฐ์ƒ์„ ๊ธฐ์ค€์œผ๋กœ ์œ„์น˜๋ฅผ ์ง€์ •ํ•œ๋‹ค.

์‚ฌ์‹ค ๊ทธ ์กฐ์ƒ์ด ์Šคํฌ๋กค ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์Šคํฌ๋กค์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด sticky๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ •์ค‘์•™ ์ •๋ ฌ

position์ด ์กฐ์ • ๊ฐ€๋Šฅํ•˜๊ณ  ์œ„์น˜๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์š”์†Œ(inline X)์— ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.

  1. width, height๊ฐ€ ๊ณ ์ • ๊ฐ’์ผ ๋•Œ
.box {
	position: absolute(or fixed)
	width: 200px;
    height: 200px;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    margin: auto;
}

์›๋ž˜ ์ƒํ•˜ margin์— auto ๊ฐ’์€ ์ ์šฉ์ด ์•ˆ ๋˜์ง€๋งŒ, position ์ธต์—์„œ๋Š” ์ƒํ•˜์˜ margin๋„ auto๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

  1. width, height์ด ์—†์–ด๋„ ๊ฐ€๋Šฅ
.box {
	top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 50%;
    height: 50%;
    padding: 20px;
}

์œ„ ์˜ˆ์‹œ์—์„œ๋Š” width์™€ height๋ฅผ ์„ค์ •ํ–ˆ์ง€๋งŒ ์„ค์ •ํ•˜์ง€ ์•Š์•„๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

position relative๋„ inline์ด ์•„๋‹ˆ๋ผ๋ฉด ๊ฐ€๋Šฅํ•˜๋‹ค.

CSS ์„ค๊ณ„์˜ ์ค‘์š”์„ฑ

CSS๋ฅผ ์ž‘์„ฑํ•˜๋‹ค ๋ณด๋ฉด ์ค‘๋ณต๋˜๋Š” ํ‘œํ˜„๋“ค์ด ์ฐธ ๋งŽ์ด ์ƒ๊ธด๋‹ค. ๊ณตํ†ต๋œ ์š”์†Œ๋“ค์„ ์ถ”๋ฆฌ๊ณ  ๊ฒฝ์šฐ์— ๋”ฐ๋ผ class๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์‹์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค๋ฉด css ํŒŒ์ผ์˜ ์–‘์„ ํ›จ์”ฌ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

.tag__btn {
  border: none;
  color: #fff;
  font-weight: 700;
}
.small {
  border-radius: 8px;
  padding: 5px 10px;
  font-size: 10px;
}
.green {
  background-color: #27ae60;
}

๋‹ค์Œ๊ณผ ๊ฐ™์ด button์— ๊ณตํ†ต์œผ๋กœ ๋“ค์–ด๊ฐˆ ์†์„ฑ์€ ๋”ฐ๋กœ ๋นผ๊ณ , ์ถ”๊ฐ€์ ์œผ๋กœ ์ ์šฉ ๋  ์˜ต์…˜์„ ์„ค์ •ํ•˜๋Š” ์‹์œผ๋กœ ํ•œ๋‹ค๋ฉด ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋Š˜๋ฆด ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ CSS์—์„œ position ๋“ฑ์„ ์„ค์ •ํ•  ๋•Œ ๊ณ ์ • ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฑธ ์ฃผ์˜ํ•ด์•ผํ•˜๋Š”๋ฐ, ๊ธฐ์ค€์ด ๋  ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€ํ•  ์ง€ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

        <a href="#" class="comment">
          <img src="./icon_info.png" alt="comment_icon" />
          <span>8</span>
        </a>

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ ˆ์ด์•„์›ƒ์ด ์žˆ์„ ๋•Œ ์ˆซ์ž์˜ ์œ„์น˜๊ฐ€ ๊ณ ์ • ๊ฐ’์œผ๋กœ ์„ค์ •๋œ๋‹ค๋ฉด ์ˆซ์ž๊ฐ€ ๋ฌด์ˆ˜ํžˆ ์ปค์ ธ ์˜†์œผ๋กœ ๋„“์–ด์กŒ์„ ๊ฒฝ์šฐ๋ฅผ ๋Œ€์ฒ˜ํ•˜์ง€ ๋ชปํ•œ๋‹ค.

์ •๋‹ต์€ ์ •ํ•ด์ง„ ๊ฒŒ ์—†์ง€๋งŒ ๋‹ค์–‘ํ•œ ๊ธฐ๋ฒ•์„ ์ด์šฉํ•ด ์ด๋Ÿฐ ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•ด์•ผํ•œ๋‹ค.

profile
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ๊ฑธ์–ด๊ฐ€๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.

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