Post

[Frontend] CSS ๊ทธ๋ฆฌ๋“œ(grid)

๐Ÿ“Œ ๋“ค์–ด๊ฐ€๋ฉฐ

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” 2์ฐจ์› ๋ ˆ์ด์•„์›ƒ ๋„๊ตฌ์ธ CSS Grid์™€, ํ™”๋ฉด ํฌ๊ธฐ์— ๋ฐ˜์‘ํ•˜๋Š” ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๋กœ ์›นํŽ˜์ด์ง€๋ฅผ ๋‹ค๋“ฌ์–ด๋ณธ๋‹ค. ๋ ˆ์ด์•„์›ƒ์— ์ดˆ์ ์„ ๋งž์ถ˜๋‹ค.


1. ์„ ํƒ์ž ์šฐ์„ ์ˆœ์œ„ โ€” class vs id

1
2
.saw    { color: gray; }     /* class โ†’ ์˜จ์ (.) */
#active { color: purple; }   /* id โ†’ ์ƒต(#) */
1
2
<li><a href="1.html" class="saw">HTML</a></li>
<li><a href="2.html" class="saw" id="active">CSS</a></li>  <!-- id๊ฐ€ ์šฐ์„  โ†’ purple -->
์„ ํƒ์ž๋ฌธ๋ฒ•์šฐ์„ ์ˆœ์œ„
class.saw๋‚ฎ์Œ
id#active๋†’์Œ

๐Ÿ’ก ํ•œ ํƒœ๊ทธ์— ๊ฐ™์€ ์˜ต์…˜์ด ์—ฌ๋Ÿฟ ๊ฑธ๋ฆฌ๋ฉด, ๋” ๊ฐœ๋ณ„์ ์ธ id๊ฐ€ ์šฐ์„ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ์œ„์˜ CSS ๋งํฌ๋Š” ํšŒ์ƒ‰(class)์ด ์•„๋‹ˆ๋ผ ๋ณด๋ผ์ƒ‰(id)์ด ๋œ๋‹ค.


2. Grid ๋ ˆ์ด์•„์›ƒ

1
2
3
4
#grid {
    display: grid;
    grid-template-columns: 150px 1fr;   /* ์™ผ์ชฝ 150px, ์˜ค๋ฅธ์ชฝ ๋‚˜๋จธ์ง€ */
}

๐Ÿ’ก display: grid๋กœ 2์ฐจ์› ๊ฒฉ์ž ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ ๋‹ค. grid-template-columns: 150px 1fr์€ ์ฒซ ์—ด์€ 150px ๊ณ ์ •, ๋‘˜์งธ ์—ด์€ ๋‚จ์€ ๊ณต๊ฐ„(1fr) ์ „๋ถ€๋ฅผ ๋œปํ•œ๋‹ค. ์‚ฌ์ด๋“œ๋ฐ”(๋ฉ”๋‰ด) + ๋ณธ๋ฌธ ๊ตฌ์กฐ์— ์ ํ•ฉํ•˜๋‹ค.

1
2
3
4
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  150px  โ”‚       1fr         โ”‚
โ”‚  (๋ฉ”๋‰ด)  โ”‚      (๋ณธ๋ฌธ)        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

3. ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ โ€” ๋ฐ˜์‘ํ˜•

1
2
3
4
5
@media (max-width: 800px) {
    #grid    { display: block; }       /* ๊ฒฉ์ž โ†’ ์„ธ๋กœ ์Œ“๊ธฐ */
    #grid ol { border-right: none; }   /* ํ…Œ๋‘๋ฆฌ ์ œ๊ฑฐ */
    h1       { border-bottom: none; }
}

๐Ÿ’ก ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๋Š” ๋ฐ˜์‘ํ˜• ์˜ต์…˜์ด๋‹ค. (max-width: 800px)๋Š” โ€œํ™”๋ฉด ํญ์ด 800px ์ดํ•˜๊ฐ€ ๋˜๋ฉดโ€ ์•ˆ์ชฝ ์Šคํƒ€์ผ์„ ์ ์šฉํ•œ๋‹ค. ์—ฌ๊ธฐ์„  ๊ฒฉ์ž(grid)๋ฅผ ์„ธ๋กœ ์Œ“๊ธฐ(block)๋กœ ๋ฐ”๊พธ๊ณ  ํ…Œ๋‘๋ฆฌ๋ฅผ ์—†์•ค๋‹ค.

Desktop View Desktop View

์ฐฝ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋‹ˆ ๊ตฌ๋ถ„์„ ์ด ์‚ฌ๋ผ์ง€๊ณ  ๋ฐฐ์น˜๊ฐ€ block์œผ๋กœ ๋ฐ”๋€๋‹ค. (none์œผ๋กœ ํ–ˆ๋‹ค๋ฉด ์•„์˜ˆ ์•ˆ ๋ณด์˜€์„ ๊ฒƒ)


๐Ÿ“ ์ •๋ฆฌ

1
2
3
4
CSS Grid & ๋ฐ˜์‘ํ˜•
โ”œโ”€ ์„ ํƒ์ž    .class(๋‚ฎ์Œ) < #id(๋†’์Œ)
โ”œโ”€ Grid      display:grid, grid-template-columns: 150px 1fr
โ””โ”€ ๋ฏธ๋””์–ด์ฟผ๋ฆฌ  @media(max-width:800px){ ... } ๋ฐ˜์‘ํ˜•
๊ฐœ๋…ํ•œ ์ค„ ์ •์˜
id ์šฐ์„ ์ˆœ์œ„๊ฐœ๋ณ„์ ์ผ์ˆ˜๋ก ์šฐ์„ 
grid2์ฐจ์› ๊ฒฉ์ž ๋ ˆ์ด์•„์›ƒ
1fr๋‚จ์€ ๊ณต๊ฐ„์˜ ๋น„์œจ
๋ฏธ๋””์–ด ์ฟผ๋ฆฌํ™”๋ฉด ํฌ๊ธฐ๋ณ„ ๋ฐ˜์‘ํ˜• ์Šคํƒ€์ผ

Grid๋Š” 2์ฐจ์› ๋ ˆ์ด์•„์›ƒ์„, ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๋Š” ๋ฐ˜์‘ํ˜•์„ ๋‹ด๋‹นํ•œ๋‹ค. 150px 1fr์ฒ˜๋Ÿผ ๊ณ ์ •+๊ฐ€๋ณ€์„ ์กฐํ•ฉํ•˜๊ณ , @media๋กœ ํ™”๋ฉด ํฌ๊ธฐ์— ๋Œ€์‘ํ•˜๋ฉด ๋‹ค์–‘ํ•œ ๊ธฐ๊ธฐ์—์„œ ์ž์—ฐ์Šค๋Ÿฌ์šด ํŽ˜์ด์ง€๊ฐ€ ์™„์„ฑ๋œ๋‹ค.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.