๐ŸŽ€ flex , grid ๋ ˆ์ด์•„์›ƒ

์„œ๋ฆฐยท2024๋…„ 2์›” 27์ผ
0

greenstudy

๋ชฉ๋ก ๋ณด๊ธฐ
1/44
post-thumbnail

์˜ค๋Š˜์€ ํ•™์›์—์„œ ๋ฐฐ์šด midiaQuery, flex, grid ๋ฅผ ๋ณต์Šตํ• ๊ฑฐ๋‹ค

โœ‚ midiaQuery

  • ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ(์ข…๋‹จ์ )์„ ์ด์šฉํ•ด ์–ด๋–ค css๋ฅผ ์ ์šฉํ• ์ง€ ์ง€์ •

  • screen : ์ฃผ๋กœ ํ™”๋ฉด์ด ๋Œ€์ƒ์ด๋‹ค (default ๊ฐ’)

  • all : ๋ชจ๋“  ์žฅ์น˜์— ์ ํ•ฉ

  • print : ์ธ์‡„ ๊ฒฐ๊ณผ๋ฌผ ๋ฐ ์ถœ๋ ฅ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ™”๋ฉด์— ํ‘œ์‹œ ์ค‘์ธ ๋ฌธ์„œ

  • ์˜ˆ์‹œ)

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <link rel="stylesheet" href="./ssss.css" />
  </head>
  <body>
    <div class="bk_div"></div>
  </body>
</html>
.bk_div {
    width: 200px;
    height: 200px;
    
}

@media screen and (max-width:500px) {
    .bk_div{
        background-color: red;
    }
}

@media screen and (min-width:501px) and (max-width:1000px) {
    .bk_div{
        background-color: yellow;
    }
}

@media screen and (min-width:1001px){
    .bk_div{
        background-color: pink;
        width: 1000px;
    }
}

์ด๋Ÿฌ๋ฉด ๊ฒฐ๊ณผ๋Š” ํ™”๋ฉด์ด 500px ์ดํ•˜ ์ผ๋•Œ๋Š” ๋ ˆ๋“œ๋กœ ๋ณด์ด๊ณ 
501px ์ด์ƒ์—์„œ 1000px ์ดํ•˜์ผ๋•Œ๋Š” ๋…ธ๋ž€์ƒ‰, 1001px ์ด์ƒ๋ถ€ํ„ฐ๋Š” ํ•‘ํฌ์ƒ‰์œผ๋กœ ๋ณด์ด๊ณ 
ํฌ๊ธฐ๋„ 200px์—์„œ 1000px๋กœ ์ž๋™์œผ๋กœ ๋Š˜์–ด๋‚œ๋‹ค.
min-width๋Š” ์ตœ์†Œ๊ฐ’, max-width๋Š” ์ตœ๋Œ€ ๊ฐ’์ด๋‹ค
ํด๋ž˜์Šค๋ช… ๋’ค์— ์ค‘๊ด„ํ˜ธ ์•ˆ์—๋Š” ์Šคํƒ€์ผ์„ ์•„๋ฌด๊ฑฐ๋‚˜ ๋„ฃ์–ด๋„ ๋œ๋‹ค
์˜ˆ๋กœ๋“ค๋ฉด font-size๋ผ๋˜์ง€ ๋“ฑ๋“ฑ


โœ‚ flex

  • flex box
    ํ–‰ ๋˜๋Š” ์—ด๋กœ ํ•ญ๋ชฉ์˜ ๋ฌด๋ฆฌ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” 1์ฐจ์› ๋ ˆ์ด์•„์›ƒ ์‹œ์Šคํ…œ

  • flex-direction
    ์ฃผ์ถ•์˜ ๋ฐฉํ–ฅ์„ ์กฐ์ ˆํ•˜๋Š” ์†์„ฑ

    • column : ์ฃผ์ถ• ์„ธ๋กœ, ์œ„์—์„œ ์•„๋ž˜๋กœ ๋ฐฐ์น˜
    • row : default ๊ฐ’, ์ฃผ์ถ•์„ ๊ฐ€๋กœ๋กœ ๋ฐฐ์น˜
    • reverse : ์ฃผ์ถ•์ด ๋’ค์ง‘ํž˜(column-reverse๋‚˜ row-reverse๋กœ ์“ธ์ˆ˜์žˆ์Œ)
  • flex-wrap
    ํ•ญ๋ชฉ์˜ ์ค„์„ ์ž๋™์œผ๋กœ ๋ฐ”๊ฟ€์ง€ ๋ง์ง€ ์ง€์ •

    • nowrap : default๊ฐ’, ํ•œ์ค„์— ํ‘œ์‹œ
    • wrap : ์—ฌ๋Ÿฌ์ค„๋กœ ํ‘œ์‹œ
    • wrap-reverse : ์—ฌ๋Ÿฌ์ค„์„ ํ‘œ์‹œํ•˜๊ณ , ์•„๋ž˜๋ถ€ํ„ฐ ๋ฐฐ์น˜
  • flex-flow
    direction์ด๋ž‘ wrap์„ ํ•œ๋ฒˆ์— ์ค„์ˆ˜์žˆ์Œ
    ์˜ˆ๋กœ ๋“ค๋ฉด

flex-flow: row wrap;
  • align-items
    • flex-start : default, ๊ต์ฐจ์ถ•์˜ ์‹œ์ž‘์ ์— ๋งž์ถ”์–ด ๋ฐฐ์น˜
    • flex-end : ๊ต์ฐจ์˜ ๋์ ์— ๋งž์ถ”์–ด ๋ฐฐ์น˜
    • center : ์ค‘์•™์— ๋งž์ถฐ ๋ฐฐ์น˜
    • baseline : ๊ต์ฐจ์ถ•์˜ ๋ฌธ์ž ๋ฐ”๋‹ฅ ๊ธฐ์ค€์„ ์— ๋งž์ถ”์–ด ๋ฐฐ์น˜
    • stretch : ์ „์ฒด์˜์—ญ์„ ์•Œ์•„์„œ ๊ฐ€๋“ ์ฐจ๊ฒŒ ๋ถ„๋ฐฐ
  • justify-content
    ์ฃผ ์ถ•์„ ๊ธฐ์ค€์œผ๋กœ ์ขŒ์šฐ์— ๋Œ€ํ•œ ๋ฐฐ์น˜
    • flex-start : default๊ฐ’, ์š”์†Œ๋“ค์„ ์ปจํ…Œ์ด๋„ˆ์˜ ์™ผ์ชฝ์œผ๋กœ ์ •๋ ฌ
    • flex-end : ์ฃผ์ถ•์˜ ๋์ ์— ๋งž์ถ”์–ด ๋ฐฐ์น˜
    • center: ์š”์†Œ๋“ค์„ ์ปจํ…Œ์ด๋„ˆ์˜ ์ค‘์•™์œผ๋กœ ์ •๋ ฌ
    • space-between: ์ฃผ์ถ•์˜ ์‹œ์ž‘์ ๊ณผ ๋์ ์— ์œ„์น˜ํ•˜๊ณ  ์š”์†Œ๋“ค ์‚ฌ์ด์— ๋™์ผํ•œ ๊ฐ„๊ฒฉ์„ ๋‘ก๋‹ˆ๋‹ค.
    • space-around :์ฃผ ์ถ•์˜ ์ฃผ์œ„์— ๋™์ผํ•œ ๊ฐ„๊ฒฉ์„ ๋‘ก๋‹ˆ๋‹ค.
    • space-evenly(FireFox Only):์ฒซ๋ฒˆ์งธ๋กœ ์˜ค๋Š” ์ •๋ ฌ ๋Œ€์ƒ ์ „์— ๋‘๊ฐœ ์˜ ์ธ์ ‘ํ•œ - ์ •๋ ฌ ๋Œ€์ƒ ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ๊ณผ ๋งˆ์ง€๋ง‰ ์ •๋ ฌ ๋Œ€์ƒ ์ดํ›„์˜ ๊ฐ„๊ฒฉ์ด ๊ฐ™๋„๋ก ํ•ญ๋ชฉ์ด ๋ถ„์‚ฐ ๋ฉ๋‹ˆ๋‹ค.
  • align-self : ๊ต์ฐจ์ถ• ํ•œ์ค„์„ ๊ธฐ์ค€์œผ๋กœ ํ•˜๋‚˜์˜ ์•„์ดํ…œ์„ ์ •๋ ฌ
<body>
    <div class="container">
      <div>1</div>
      <div>2</div>
      <div>3</div>
      <div>4</div>
      <div>5</div>
      <div>6</div>
    </div>
  </body>

body์•ˆ์— div ํด๋ž˜์Šค ์ด๋ฆ„ container์„ ์ฃผ๊ณ  ๊ทธ์•ˆ์— div๋ฐ•์Šค 6๊ฐœ๋ฅผ ๋งŒ๋“ ๋‹ค

.container {
    padding: 5px;
    width: 500px;
    height: 500px;
    background-color: gray;
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-content: space-between;
}


.container>div {
    background-color: cadetblue;
    border: 1px solid #000;
    width: 49%;
    height: 32%;
}

container ๋ฐ•์Šค์— ์‚ฌ์ด์ฆˆ๋ฅผ ๋ถ€์—ฌํ•˜๊ณ  display: flex๋ฅผ ์ฃผ๊ณ  wrap์„ ์ค˜์„œ ์—ฌ๋Ÿฌ์ค„์„ ๋งŒ๋“ค๊ณ  justify-content: space-between ์ฃผ ์ถ•์„ ์–‘๋์— ๋‘๊ณ  ์‚ฌ์ด์— ๋™์ผํ•œ ๊ฐ„๊ฒฉ์ด ์˜ค๊ฒŒํ•œ๋‹ค ๊ธฐ๋ณธ default๊ฐ’์œผ๋กœ ์ •๋ ฌ์€ ์œ„์—์„œ ์•„๋ž˜๋กœ ๋ฐฐ์น˜์‹œ์ผœ๋‘”๋‹ค
๊ฒฐ๊ณผ๋Š” !

ํ™•์‹ค์ด float ๋ณด๋‹ค๋Š” ๋ ˆ์ด์•„์›ƒ ๋ฐฐ์น˜๊ฐ€ ๊ฐ„๋‹จํ•˜๊ณ  ์‰ฌ์šด๊ฑฐ ๊ฐ™๋‹ค!

flex css๋ฅผ ์—ฐ์Šตํ•˜๋ฉด์„œ ํ•˜๋ฉด ์ข‹์€ ๊ฒŒ์ž„
FLEXBOX FROGGY
https://flexboxfroggy.com/#ko


โœ‚ grid

ํ–‰๊ณผ ์—ด์„ ๋™์‹œ์— ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” 2์ฐจ์›์  ๋ ˆ์ด์•„์›ƒ ์‹œ์Šคํ…œ

  • grid-template-columns(์„ธ๋กœ)
    ํ–‰๊ณผ ๋„ˆ๋น„๋ฅผ ์กฐ์ ˆ
  • grid-template-rows(๊ฐ€๋กœ)
    ์—ด๊ณผ ๋†’์ด๋ฅผ ์กฐ์ ˆ
  • fr๋‹จ์œ„
    ๊ทธ๋ฆฌ๋“œ ์‹œ์Šคํ…œ์—์„œ ๋‚จ์€ ์˜์—ญ์„ ๋น„์œจ๋กœ์จ ๋‚˜๋ˆ„์–ด ์ ์šฉ
  • repeat(๋ฐ˜๋ณตํšŸ์ˆ˜,ํฌ๊ธฐ)
    ๋™์ผํ•˜๊ฒŒ ์•„์ดํ…œ๋“ค์˜ ํฌ๊ธฐ์™€ ๊ฐฏ์ˆ˜๋ฅผ ์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.
    • minmax(์ตœ์†Œ๊ฐ’, ์ตœ๋Œ€๊ฐ’)
    • auto-fit, auto-fill : ์ž๋™์œผ๋กœ ์ปฌ๋Ÿผ ์ˆ˜๋ฅผ ์กฐ์ ˆ
  • gap
    ์•„์ดํ…œ๋“ค ์‚ฌ์ด๋ฅผ ๋™์ผํ•œ ๊ฐ„๊ฒฉ์œผ๋กœ ๋„์–ด์ค„์ˆ˜์žˆ๋‹ค. ์ •ํ™•ํžˆ๋Š” ๊ทธ๋ฆฌ๋“œ๊ฐ€ ๊ตต์–ด์ง„๋‹ค
  • grid-column, grid-row
    grid-column ์ด๋‚˜ grid-row ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ๊ฐ ์•„์ดํ…œ๋“ค์ด ๋…๋ฆฝ์ ์œผ๋กœ ์–ด๋””๊นŒ์ง€ ํฌ๊ธฐ์™€ ๋†’์ด๋ฅผ ๊ฐ€์งˆ ๊ฑด์ง€ ๊ฒฐ์ • ํ•  ์ˆ˜ ์žˆ๋‹ค.

์•„๊นŒ flex๋ฅผ ์ด์šฉํ•ด์„œ ๋งŒ๋“  ๋ ˆ์ด์•„์›ƒ์„ grid๋ฅผ ์ด์šฉํ•ด์„œ ๋งŒ๋“ค๊ฒŒ ๋˜๋ฉด
html ๋ฌธ์„œ๋Š” ๋˜‘๊ฐ™์€๊ฑธ ์“ฐ๊ณ 

.container {
  padding: 5px;
  width: 500px;
  height: 500px;
  background-color: gray;
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr 1fr 1fr;
  gap: 5px;
}

.container > div {
  background-color: cadetblue;
  border: 1px solid #000;
}

์œ„์—๋ž‘ ๋˜‘๊ฐ™์ด container์— ํŒจ๋”ฉ 5px๋ฅผ ์ฃผ๊ณ  ๋†’์ด๋ž‘ ๋„“์ด ์‚ฌ์ด์ฆˆ๋ฅผ ๊ฐ™๊ฒŒ ์ฃผ๊ณ  display: grid๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค grid-template-columns์œผ๋กœ ์„ธ๋กœ์ค„์„ ๋‘์นธ์œผ๋กœ ๋„“์ด๋Š” ๋™์ผํ•œ ๋น„์œจ๋กœ ๋งŒ๋“ค๊ณ  grid-template-rows๋กœ ๊ฐ€๋กœ์ค„์„ ์„ธ์นธ ๋™์ผํ•œ ๋น„์œจ๋กœ ๋งŒ๋“ ๋‹ค 1fr 1fr 1fr์€ 1:1:1 ์ด๋ž€ ๋œป์ด๋‹ค
gap: 5px์„ ์ค˜์„œ ์‚ฌ์ด ๊ฐ„๊ฒฉ์„ 5px๋กœ ๋™์ผํ•˜๊ฒŒ ์ค€๋‹ค
๊ฒฐ๊ณผ๋Š” !

flex๋ž‘ ๋™์ผํ•˜๊ฒŒ ๋‚˜์˜จ๋‹ค ! ์‚ฌ์‹ค ์•ˆ์— ๊ฐ„๊ฒฉ์ด ๋‹ค๋ฅด๊ธด ํ•œ๋ฐ ์• ์ดˆ์— gap์ด๋ž‘ space-between ์€ ๋‹ค๋ฅธ๊ฑฐ๋‹ˆ๊น ์™„์ „ํžˆ ๋˜‘๊ฐ™๊ฒ ๋ชปํ•˜๋Š”๊ฑฐ ๊ฐ™๋‹ค ,, ๋‚˜๋Š” flex๋ณด๋‹ค grid๊ฐ€ ๋” ์–ด๋ ค์šด ๋Š๋‚Œ โ•ฏ๏ธฟโ•ฐ
๋” ์—ฐ์Šต ํ•ด๋ด์•ผ ๊ฒ ๋‹น

grid css ์—ฐ์Šตํ•˜๊ธฐ ์ข‹์€ ๊ฒŒ์ž„
GRID GARDEN
https://cssgridgarden.com/#ko

๐Ÿ“Œ์˜ค๋Š˜์˜ ํ›„๊ธฐ

grid-template-columns ๋ถ€๋ถ„์ด ํ—ท๊ฐˆ๋ฆฐ๋‹ค ์•„์ง ใ… ใ…  ๊ทธ๋ž˜๋‘ ๋ ˆ์ด์•„์›ƒ ๋ช‡๋ฒˆ๋” ์žก์•„๋ณด๋ฉด ๊ฐ ์žก๊ฒŸ์ง€ ? ํ™”์ดํŒ… ํ•˜์žฅ !!!

profile
๊ฐœ๋ฐœ ์ผ๊ธฐ ( โ€ขฬ€ ฯ‰ โ€ขฬ )โœง

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

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด