λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

πŸ”₯ TIL

[CSS] ν˜•μ œμš”μ†Œλ‘œ 갯수 μ•Œμ•„λ‚΄κΈ°

λ°˜μ‘ν˜•

2021.03.18

μš”μ†Œλ₯Ό νΌμ„ΌνŠΈλ‘œν•˜μ—¬ μ μ‘ν˜•μ΄λ‚˜ λ°˜μ‘ν˜•μ—μ„œλ„ 자유둭게 μ“Έ 수 μžˆλŠ” ν…œν”Œλ¦Ώμ΄λ‹€.

이해λ₯Ό ν™•μ‹€νžˆ ν•˜κ³ μž λ‹€μ‹œ μ •λ¦¬ν•˜κ²Œ λ˜μ—ˆλ‹€.

 

λ³Έ 기법은 λ‹€μ–‘ν•˜κ²Œ μ‘μš©ν•  수 μžˆλ‹€. 원본 λ¬Έμ„œμ—μ„œλŠ” li μš”μ†Œ κ°―μˆ˜μ— 따라 블둝 μ•ˆμ˜ 배경색을 λ‹€μ–‘ν•˜κ²Œ λ§€κΈ°λŠ” 것을 μ˜ˆμ‹œλ‘œ λ“€μ—ˆλ‹€.

flexboxλ₯Ό μ‚¬μš©ν•  수 μ—†λŠ” ν™˜κ²½μ΄λΌ κ°€μ •ν•œλ‹€.

 

λ‹€μŒ μ½”λ“œμ—μ„œλŠ” float: left λ₯Ό μ‚¬μš©ν•˜μ—¬ li μš”μ†Œλ“€μ„ λ„μš΄ μƒνƒœμ΄λ‹€.

li {
    float: left;
}

/* liκ°€ ν•˜λ‚˜μΌ λ•Œ */
li:first-child:nth-last-child(1) {
    width: 100%;
}

/* liκ°€ λ‘κ°œμΌ λ•Œ */
li:first-child:nth-last-child(2),
li:first-child:nth-last-child(2) ~ li {
    width: 50%;
}

/* liκ°€ 3개일 λ•Œ */
li:first-child:nth-last-child(3),
li:first-child:nth-last-child(3) ~ li {
    width: 33.3333%;
}

/* liκ°€ 4개일 λ•Œ */d d
li:first-child:nth-last-child(4),
li:first-child:nth-last-child(4) ~ li {
    width: 25%;
}
  • li:first-child:nth-last-child()
    • li쀑에 첫 번째 μžμ‹μ„ 선택, nth-last-child() λ₯Ό κ·Έ 뒀에 λ°”λ‘œ λΆ™μ—¬
      리슀트 μ•ˆμ˜ μžμ‹ μš”μ†Œ κ°―μˆ˜μ— λ”°λ₯Έ μŠ€νƒ€μΌ λΆ„κΈ°λ¬Έ 역할을 ν•œλ‹€.
    • 이 쑰건은 적어도 n개의 μžμ‹μš”μ†Œκ°€ μ‘΄μž¬ν•  λ•Œ 참이 λœλ‹€.
  • li:first-child:nth-last-child() ~ li
    • λ‚˜λ¨Έμ§€ ν˜•μ œ μš”μ†Œλ“€μ„ 선택, 같은 CSS λ₯Ό μ μš©ν•œλ‹€.

 

이λ₯Ό κ°„λž΅ν™”ν•˜μ—¬ μžμ‹ μš”μ†Œμ˜ 갯수λ₯Ό n개라 ν–ˆμ„ λ•Œ μ½”λ“œλŠ” λ‹€μŒκ³Ό κ°™λ‹€.

li:first-child:nth-last-child(n),
li:first-child:nth-last-child(n) ~ li {
    width: 1 / n * 100%;
}

 

 

β“λ§Œμ•½μ— 3개의 셀렉터에 margin 이 μžˆλ‹€λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Ό 될까?

/*
 * 쑰건1. width, margin 값이 지정됨.
 * 쑰건2. 1개, 2개 일 λ•Œλ„ width κ°’ λ³€κ²½.
 * width: 348px; margin: 28px; inner(λ ˆμ΄μ•„μ›ƒ κΈ°μ€€κ°’): 1100px;
*/

li:first-child:nth-last-child(1),
li:first-child:nth-last-child(1) ~ li {
	width: 100%;
    margin: 0;
}

li:first-child:nth-last-child(2),
li:first-child:nth-last-child(2) ~ li {
    width: 48.6%;
    margin: 2.6%;
}

li:first-child:nth-last-child(3),
li:first-child:nth-last-child(3) ~ li {
    /* 348/1100*100 = 31.636363.. */
    width: 31.6%;

    /* 28/1100*100 = 2.545454.. */
    margin: 2.6%;
}

λŒ€μ²΄λ‘œ 1~3κΉŒμ§€ μ¨μ€˜μ•Ό 후에 μˆ˜μ •ν•  λ•Œ μ’‹λ‹€.

 

 

Reference

https://serisepomme.tistory.com/entry/CSS%EB%A1%9C-%EC%9E%90%EC%8B%9D-%EC%9A%94%EC%86%8C-%EA%B0%AF%EC%88%98-%EC%95%8C%EC%95%84%EB%82%B4%EA%B8%B0

λ°˜μ‘ν˜•

'πŸ”₯ TIL' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

2021.04.07 // width calc() μ£ΌκΈ°  (0) 2021.04.07
2021.04.05  (0) 2021.04.05
2021.03.22  (0) 2021.03.22
[CSS] 속성 μ„ νƒμž 정리  (0) 2021.03.19
[HTML] label νƒœκ·Έ / [jQuery] childern() , find()  (0) 2020.07.13