๐Ÿ’ป๐Ÿ’€/๊ฐœ๋ฐœ

[CSS] :nth-last-child() ๊ฐ€์ƒ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด ์š”์†Œ๊ฐ€ x๊ฐœ์ผ ๋•Œ ์ „์ฒด ์„ ํƒํ•˜๊ธฐ

db2 2021. 9. 24. 10:51

์š”๊ตฌ์‚ฌํ•ญ

๋™์ ์œผ๋กœ li ์š”์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ฐ”๋€Œ๋Š” ๋ชฉ๋ก์ด ์กด์žฌํ•œ๋‹ค. ์ด ๋ชฉ๋ก์€ ์ตœ๋Œ€ 4๊ฐœ์˜ li ์š”์†Œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ, ์•„๋ž˜์˜ ์˜ˆ์‹œ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ li ๊ฐ€ 4๊ฐœ์ผ ๋•Œ๋งŒ ๋ถ€๋ชจ ์š”์†Œ์— ๊ฝ‰์ฐจ๊ฒŒ ์Šคํƒ€์ผ๋ง ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

์–ด๋–ป๊ฒŒํ•˜๋ฉด JavaScript ์ฝ”๋“œ ์—†์ด CSS๋งŒ์œผ๋กœ li๊ฐ€ 4๊ฐœ์ผ ๋•Œ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋‹ค๋ฅธ ์Šคํƒ€์ผ๋ง์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ?

์™ผ์ชฝ์—์„œ๋ถ€ํ„ฐ ์š”์†Œ๊ฐ€ 2๊ฐœ์ผ ๋•Œ, ์š”์†Œ๊ฐ€ 3๊ฐœ์ผ ๋•Œ, ์š”์†Œ๊ฐ€ 4๊ฐœ์ผ ๋•Œ์˜ ๊ฒฐ๊ณผ

๊ธฐ๋ณธ UI ์ฝ”๋“œ

<!-- html -->
<ul class="list">
  <li class="item"></li>
  <li class="item"></li>
  <li class="item"></li>
  <li class="item"></li>
</ul>
/* CSS */
html,
body {
  height: 100%;
}

ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.list {
  display: flex;
  flex-direction: column;
  height: 30em;
  border: 5px solid;
}

.item {
  height: 20%;
  margin-bottom: 0.3em;
  background-color: wheat;
}

๊ตฌํ˜„

๊ฐ€์ƒ ํด๋ž˜์Šค :nth-last-child()์™€ ์„ ํƒ์ž ~๋ฅผ ์‘์šฉํ•˜๋ฉด CSS๋งŒ์œผ๋กœ ๊ฐ„๋‹จํžˆ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธ€์„ ๋‹ค ์ž‘์„ฑํ•˜๊ณ  ๋‚˜์„œ์•ผ Grid ๋ ˆ์ด์•„์›ƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ๋” ๋ชจ๋˜ํ•˜๊ณ  ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์ธ ๋ฐฉ๋ฒ•์ผ ์ˆ˜ ์žˆ๊ฒ ๋‹จ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค...

.item:nth-last-child(n + 4),
.item:nth-last-child(n + 4) ~ .item {
  flex: 1;
  margin-bottom: 0;
  background-color: aliceblue;
}

.item:nth-last-child(n + 4) ~ .item {
  border-top: 1px solid;
}

์œ„์˜ ์„ ํƒ์ž๋ฅผ ํ•ด์„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

.item:nth-last-child(n + 4)
๋งˆ์ง€๋ง‰์—์„œ๋ถ€ํ„ฐ 4๋ฒˆ์งธ ์ฆ‰, ์—ฌ๊ธฐ์„œ๋Š” ๋ชฉ๋ก ์ค‘ ๊ฐ€์žฅ ์ฒซ ๋ฒˆ์งธ์— ์žˆ๋Š” .item ์š”์†Œ๋ฅผ ์„ ํƒํ•œ๋‹ค.

.item:nth-last-child(n + 4) ~ .item
~๋Š” ์ผ๋ฐ˜ ํ˜•์ œ ์„ ํƒ์ž๋กœ A ~ B ํŒจํ„ด์ผ ๋•Œ, A ์š”์†Œ ๋’ค์— ๋”ฐ๋ผ์˜ค๋Š” ๋ชจ๋“  ํ˜•์ œ B ์š”์†Œ๋ฅผ ์„ ํƒํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชฉ๋ก ์ค‘ ๊ฐ€์žฅ ์ฒซ ๋ฒˆ์งธ์— ์žˆ๋Š” .item ์š”์†Œ๋ฅผ ๋’ค๋”ฐ๋ฅด๋Š” 2 ~ 4๋ฒˆ์งธ ํ˜•์ œ .item ์š”์†Œ๋“ค์„ ์„ ํƒํ•˜๊ฒŒ ๋œ๋‹ค.

๊ทธ๋ž˜์„œ ์ตœ์ข…์ ์œผ๋กœ .item ์š”์†Œ๊ฐ€ 4๊ฐœ์ผ ๋•Œ ์ „๋ถ€ ์„ ํƒ๋˜๊ณ , flex: 1; ์˜ ์†์„ฑ์— ์˜ํ•ด ๋ถ€๋ชจ ์˜์—ญ์„ ๋™์ผํ•œ ๋น„์œจ๋กœ ๊ฝ‰ ์ฑ„์šฐ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด :nth-last-child()๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๊ธธ๋ž˜ ์ด๊ฒŒ ๊ฐ€๋Šฅํ•œ ๊ฑธ๊นŒ?

:nth-last-child()

:nth-last-child()๋Š” ํ˜•์ œ ์š”์†Œ๋“ค ์ค‘ ๋งจ ๋งˆ์ง€๋ง‰๋ถ€ํ„ฐ ์„ธ์–ด์„œ ํŠน์ • ์œ„์น˜์˜ ์š”์†Œ๋ฅผ ๋งค์นญํ•˜๋Š” CSS์˜ ๊ฐ€์ƒ ํด๋ž˜์Šค์ด๋‹ค. ์ธ์ž๋กœ ์ˆซ์ž ํ˜น์€ ํ‘œํ˜„์‹์„ ์ „๋‹ฌํ•˜์—ฌ ๋งค์นญ ํŒจํ„ด์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋•Œ, ํ‘œํ˜„์‹์—์„œ์˜ n์€ 0 ํ˜น์€ ์–‘์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

์˜ˆ์‹œ

li:nth-last-child(2)
๋งˆ์ง€๋ง‰์—์„œ๋ถ€ํ„ฐ 2๋ฒˆ์งธ li ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

li:nth-last-child(2n) ํ˜น์€ li:nth-last-child(even)
๋งˆ์ง€๋ง‰์—์„œ๋ถ€ํ„ฐ 2, 4, 6, ..., ์ง์ˆ˜๋ฒˆ์งธ์˜ li ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

li:nth-last-child(2n + 1) ํ˜น์€ li:nth-last-child(odd)
๋งˆ์ง€๋ง‰์—์„œ๋ถ€ํ„ฐ 1, 3, 5, ..., ํ™€์ˆ˜๋ฒˆ์งธ์˜ li ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

li:nth-last-child(n) ํ˜น์€ li:nth-last-child(n + 1)
๋ชจ๋“  li ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. n์ด 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ณ  :nth-last-child()๋Š” ๋งจ ์•„๋ž˜์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ ์นด์šดํŒ…์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, n๊ณผ n + 1์€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ด๋Š” ๋‹จ์ˆœํ•œ li ์„ ํƒ์ž์™€๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ์ด๋‹ค.

li:nth-last-child(1) ํ˜น์€ li:nth-last-child(0n + 1)
๋งˆ์ง€๋ง‰์—์„œ๋ถ€ํ„ฐ 1๋ฒˆ์งธ li ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ด๋Š” :last-child ์„ ํƒ์ž์™€ ๋™์ผํ•œ ๊ฒฐ๊ณผ์ด๋‹ค.

li:nth-last-child(-n + 4)
๋งˆ์ง€๋ง‰์—์„œ๋ถ€ํ„ฐ 4๋ฒˆ์งธ๊นŒ์ง€์˜ li ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. li์˜ ์ด ๊ฐœ์ˆ˜๊ฐ€ 4๊ฐœ ์ดํ•˜๋ผ๋ฉด, ๋ชจ๋“  li ์š”์†Œ๋“ค์„ ์„ ํƒํ•˜๋Š” ํšจ๊ณผ๋ฅผ ๊ฐ€์ง„๋‹ค.

li:nth-last-child(n + 4)
๋งˆ์ง€๋ง‰์—์„œ๋ถ€ํ„ฐ 4๋ฒˆ์งธ ์š”์†Œ์—์„œ ์‹œ์ž‘ํ•ด ๋ชฉ๋ก์˜ ์•ž์—์„œ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๊นŒ์ง€ ์ „๋ถ€ ์„ ํƒํ•œ๋‹ค.

๋‹ค์‹œ ๊ฒฐ๋ก 

์ด๋ฒˆ ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„  ํ•˜๋‚˜์˜ ์กฐ๊ฑด์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋ฐ”๋กœ ํŠน์ • CSS๋ฅผ ์ ์šฉํ•˜๊ณ  ์‹ถ์€ ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ช…ํ™•ํžˆ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿผ ์ด๋Ÿฐ ์‘์šฉ๋„ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

ํ˜•์ œ ์š”์†Œ๊ฐ€ x๊ฐœ ์ด์ƒ์ผ ๋•Œ ์ „์ฒด ์„ ํƒ

li:nth-last-child(n + x), 
li:nth-last-child(n + x) ~ li { 
}

ํ˜•์ œ ์š”์†Œ๊ฐ€ x๊ฐœ ์ดํ•˜์ผ ๋•Œ ์ „์ฒด ์„ ํƒ

li:nth-last-child(-n + x) { 
} 
/* ํ˜น์€ */ 
li:nth-last-child(-n + x):first-child, 
li:nth-last-child(-n + x):first-child ~ li { 
}

๋„์›€
์ œ์ผ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ถ€ํ„ฐ ์„ธ๋Š” nth-last-child()