๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŒŒ | WEB DEV/React

[React] 7. ์ด๋ฏธ์ง€ ์‚ฝ์ž…ํ•˜๊ธฐ(css, html, publicํด๋”์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ)

by KASSID 2023. 7. 3.

๋ชฉ์ฐจ

    728x90

    ์ด์ „ ๊ธ€ โ–ผ

    ๋”๋ณด๊ธฐ

     

    React์—์„œ ์ด๋ฏธ์ง€๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

     

    1. cssํŒŒ์ผ ๋‚ด์—์„œ ์ด๋ฏธ์ง€ ์ ‘๊ทผํ•  ๋•Œ

    //App.css
    background-image: url('์ด๋ฏธ์ง€ ๊ฒฝ๋กœ');

    css ํŒŒ์ผ์—์„œ ์ด๋ฏธ์ง€์˜ url ๊ฒฝ๋กœ ํ˜น์€ srcํด๋” ๋‚ด์˜ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์„ ๋•Œ

    url()์— ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ๋ฅผ ์‚ฝ์ž…ํ•˜๋ฉด ๋œ๋‹ค.

     

     

    2. html ํŒŒ์ผ ๋‚ด์—์„œ srcํด๋” ๋‚ด ์ด๋ฏธ์ง€์— ์ ‘๊ทผํ•  ๋•Œ (2๊ฐ€์ง€)

    //App.js
    
    import image1 from './image.png'
    
    function App(){
      return(
        <>
          ...
          
          <div className="image1" style={{ backgroundImage : 'url(' + image1 + ')' }}></div>
          <img className="image2" src={image1}/>
        </>
      )
    }

    (1) " import ์ด๋ฏธ์ง€์ด๋ฆ„ from ๊ฒฝ๋กœ "๋ฅผ ํ†ตํ•ด์„œ ๋จผ์ € ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. (๊ฒฝ๋กœ๋Š” ./๋กœ ์‹œ์ž‘)

    (2-1)  style={ {backgroundImage: 'url(' + ์ด๋ฏธ์ง€์ด๋ฆ„ + ')' } }

    (2-2) img ํƒœ๊ทธ ์‚ฌ์šฉ ์‹œ : <img src={ ์ด๋ฏธ์ง€์ด๋ฆ„ }/>

     

     

    3. public ํด๋”์—์„œ ๊ฐ€์ ธ์˜ฌ ๋•Œ

    1) publicํด๋”์˜ ์—ญํ• 

    React App์„ ์™„์„ฑํ•œ ํ›„ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด build๋ฅผ ํ•˜๋ฉด ํ•œ ํŒŒ์ผ๋กœ ์••์ถ•์„ ํ•œ๋‹ค.

    ์ด๋•Œ publicํด๋”๋Š” ์••์ถ•๋˜์ง€ ์•Š๊ณ  ํ˜•ํƒœ๋ฅผ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•œ๋‹ค.

     

    ๋”ฐ๋ผ์„œ ์ˆ˜์ •์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ staticํŒŒ์ผ(์ด๋ฏธ์ง€, json, ํ…์ŠคํŠธ ๋“ฑ)์€ public ํด๋”์— ์ €์žฅํ•ด๋„ ๋œ๋‹ค.

     

    2) publicํด๋”์˜ ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ

    <img src={process.env.PUBLIC_URL + '/๊ฒฝ๋กœ'} />

    ์œ„์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ

    process.env.PUBLUC_URL + '/๊ฒฝ๋กœ' ๋ฅผ ์ด์šฉํ•ด ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

     

    ๋งŒ์•ฝ ๋ฉ”์ธ URL์— ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋Š” '/๊ฒฝ๋กœ'๋งŒ์œผ๋กœ๋„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์ง€๋งŒ

    endpoint๊ฐ€ ์ถ”๊ฐ€๋  ๊ฒฝ์šฐ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ํŒŒ์ผ์„ ์ฐพ์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—

    process.env.PUBLUC_URL์„ ๋ถ™์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

     

     

     


    <img>ํƒœ๊ทธ css์†์„ฑ

    1) ์š”์†Œ ๋‚ด ์ด๋ฏธ์ง€ ํฌ๊ธฐ(object-fit) https://developer.mozilla.org/ko/docs/Web/CSS/object-fit

     

    fill - ์š”์†Œ ์ฝ˜ํ…์ธ  ๋ฐ•์Šค์— ๋งž์ถ”๊ธฐ

    contain - ๋น„์œจ ์œ ์ง€&๋ฐ•์Šค ๋‚ด์— ๋“ค์–ด๊ฐ€๋„๋ก ์กฐ์ •

    cover - ๋น„์œจ ์œ ์ง€&๋ฐ•์Šค ๊ฐ€๋“ ์ฑ„์šฐ๊ธฐ

    scale-down - none, contain ์ค‘ ์ฝ˜ํ…์ธ  ํฌ๊ธฐ๊ฐ€ ์ž‘์•„์ง€๋Š” ๊ฒƒ

     

     

    2) ์š”์†Œ ๋‚ด ๋ฐ•์Šค ์œ„์น˜(object-position) https://developer.mozilla.org/ko/docs/Web/CSS/object-position

     

    ์ˆ˜์น˜ ์ ์šฉ์‹œ : ์ขŒ|์šฐ ์ƒ|ํ•˜

    ex) object-position: 0px 0px; (left top)

    ๋Œ“๊ธ€