๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค/ํ”„๋กœ์ ํŠธ

[๋ฐ๋ธŒ์ฝ”์Šค]๐ŸŽพํ…Œ๋‹ˆ์Šค ๋งˆ์ผ“ ๋งŒ๋“ค๊ณ  ๋ฐฐํฌํ•˜๊ธฐ(HTML,CSS,Netlify)

ํ‚ํ‚์ž‰ 2025. 4. 3. 20:22

์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์šด HTML, CSS๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•œ ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๊ณ  ๋ฐฐํฌํ•ด๋ณด์•˜๋‹ค. ์˜ค๋žœ๋งŒ์— ์ˆœ์ˆ˜ HTML, CSS๋กœ๋งŒ ์ž‘์—…ํ•˜๋Š”๋ฐ ๋„ˆ๋ฌด ์žฌ๋ฐŒ์—ˆ๋‹ค.


๐ŸŽซํ…Œ์ด๋ธ”

HTML์„ ๋ฐฐ์šธ ๋• ํ…Œ์ด๋ธ”์„ ๋‹ค๋ฃจ์ง€ ์•Š์•˜๋Š”๋ฐ, ์ด๋ฒˆ ์‹ค์Šต์—์„œ ํ…Œ์ด๋ธ”์„ ์ ์šฉํ•ด๋ณด์•˜๋‹ค.

ํ…Œ์ด๋ธ”์€ ํ–‰๊ณผ ์—ด๋กœ ๊ตฌ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ์— ์ ํ•ฉํ•œ ์š”์†Œ์ด๋‹ค. ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑํ•œ๋‹ค.

<table>
        <th>No</th>
        <th>Product</th>
        
        <!--์ฒซ๋ฒˆ์งธ ํ–‰-->
        <tr>
            <td>1</td>
            <td>product1</td>
        </tr>
        
        <!--๋‘๋ฒˆ์งธ ํ–‰-->
        <tr>
            <td>2</td>
            <td>product2</td>
        </tr>
        
        <!--์„ธ๋ฒˆ์งธ ํ–‰-->
        <tr>
            <td>3</td>
            <td>product3</td>
        </tr>
    </table>
  • <table> : ํ…Œ์ด๋ธ” ์ „์ฒด ์š”์†Œ๋ฅผ ๊ฐ์‹ธ๋Š” ์ปจํ…Œ์ด๋„ˆ ์š”์†Œ
  • <th> : ํ…Œ์ด๋ธ” ํ—ค๋” ์…€(์—ด ์ œ๋ชฉ)์„ ์ •์˜
  • <tr> : ํ…Œ์ด๋ธ” ํ–‰(๊ฐ€๋กœ์ค„)์„ ์ƒ์„ฑ
  • <td> : ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ์…€(๋‚ด์šฉ)์„ ์ •์˜

HTML ํ…Œ์ด๋ธ”์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ตœ์†Œํ•œ์˜ ์Šคํƒ€์ผ๋งŒ ์ ์šฉ๋˜๊ณ , ๋˜ ๊ฐ ์…€์€ ๋…๋ฆฝ์ ์ธ ํ…Œ๋‘๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ณด๊ธฐ์— ์ด์˜์ง€๊ฐ€ ์•Š๋‹ค.

๊ทธ๋ƒฅ border์„ ์ ์šฉํ•ด๋ฒ„๋ฆฌ๋ฉด ์ด๋ ‡๊ฒŒ ๋จ

 

table์˜ ์ด์ค‘ ํ…Œ๋‘๋ฆฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด border-collpase ์†์„ฑ์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

๋˜, ํ–‰์„ ์‰ฝ๊ฒŒ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ต๋Œ€๋กœ ์ƒ‰์„ ๋ณ€๊ฒฝํ•˜๋„๋ก ์„ค์ •ํ•˜์˜€๋‹ค.

table {
  border: solid 1px black;
  padding: 10px;
  margin-top: 100px;
  border-collapse: collapse;
}

th,
td {
  padding: 8px;
}

tr:nth-child(even) {
  background-color: #f2f2f2;
}

CSS๊ฐ€ ์ด๋ธํ•ด์š”

๐ŸŽจCSS ์ •๋ฆฌ

1. ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ

   body {
     display: flex;
     flex-direction: column;
     justify-content: center;
     align-items: center;
     text-align: center;
   }

 

๋ชจ๋“  ์ฝ˜ํ…์ธ ๋ฅผ ํŽ˜์ด์ง€ ์ค‘์•™์— ๋ฐฐ์น˜ํ•˜๊ธฐ ์œ„ํ•ด Flexbox๋ฅผ ํ™œ์šฉํ–ˆ๋‹ค. ์„ธ๋กœ ๋ฐฉํ–ฅ์œผ๋กœ ์š”์†Œ๋“ค์„ ์ •๋ นํ•˜๊ณ , ๊ฐ€๋กœ/์„ธ๋กœ ๋ชจ๋‘ ์ค‘์•™ ์ •๋ ฌ์„ ์ ์šฉํ•ด ๊ท ํ˜• ์žกํžŒ ๋ ˆ์ด์•„์›ƒ์„ ์™„์„ฑํ–ˆ๋‹ค.

 

2. ์ƒํ’ˆ ์นด๋“œ ๋ ˆ์ด์•„์›ƒ

   .card_container {
     display: flex;
     flex-direction: row;
   }
   
   .card {
     margin: 60px;
   }


์ƒํ’ˆ ์นด๋“œ๋“ค์„ ๊ฐ€๋กœ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ ์œ„ํ•ด card_containerํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ  Flexbox๋ฅผ ์ ์šฉํ–ˆ๋‹ค. ๊ฐ ์นด๋“œ ์‚ฌ์ด์— ์—ฌ๋ฐฑ์„ ์ฃผ์–ด ์‹œ๊ฐ์ ์œผ๋กœ ๊ตฌ๋ถ„์ด ์‰ฝ๋„๋ก margin์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

 

3. ์ด๋ฏธ์ง€ ์Šคํƒ€์ผ๋ง

   .card_img {
     width: 300px;
     height: 300px;
     object-fit: contain;
   }


๋‹ค์–‘ํ•œ ๋น„์œจ์˜ ์ƒํ’ˆ ์ด๋ฏธ์ง€๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์ • ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•˜๊ณ , object-fit:contain์„ ์‚ฌ์šฉํ–ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์„ค์ •ํ•˜๋ฉด, ์ด๋ฏธ์ง€ ๋น„์œจ์ด ์œ ์ง€๋˜๋ฉด์„œ ์ง€์ •๋œ ์˜์—ญ ๋‚ด์—์„œ ์ด๋ฏธ์ง€๊ฐ€ ๊น”๋”ํ•˜๊ฒŒ ํ‘œ์‹œ๋œ๋‹ค.

 

4. ๋ฒ„ํŠผ ๋””์ž์ธ

   .card_button {
     width: 160px;
     height: 32px;
     border-radius: 8px;
     border: 1px solid #ababab;
     background-color: white;
     box-shadow: 1px 1px 1px 1px rgb(224, 224, 224);
     font-weight: bold;
   }
   
   .card_button:hover {
     background-color: rgb(26, 26, 26);
     color: white;
   }


๋ฒ„ํŠผ์— ์ž…์ฒด๊ฐ์„ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•ด ๋‘ฅ๊ทผ ๋ชจ์„œ๋ฆฌ์™€ ํ…Œ๋‘๋ฆฌ, ๊ทธ๋ฆผ์ž ํšจ๊ณผ๋ฅผ ์ ์šฉํ–ˆ๋‹ค. hover ํšจ๊ณผ๋ฅผ ์ ์šฉํ•˜์—ฌ, ๋งˆ์šฐ์Šค๋ฅผ ์˜ฌ๋ ธ์„ ๋•Œ ๋ฐฐ๊ฒฝ์ƒ‰๊ณผ ๊ธ€์ž์ƒ‰์ด ๋ณ€๊ฒฝ๋˜๊ฒŒ ํ–ˆ๋‹ค.

๋‚˜์˜ ์ž‘๊ณ  ๊ท€์—ฌ์šด ๋ฒ„ํŠผ๋“ค

 

5. ๋งํฌ ์Šคํƒ€์ผ๋ง

   a {
     font-size: 24px;
     font-weight: bold;
     text-decoration: none;
   }


์•„๋ฌด๋ž˜๋„ ๊ธฐ๋ณธ ๋ฐ‘์ค„์€ ์ด์˜์ง€๊ฐ€ ์•Š์•„์„œ text-decoration:none์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ๋ฐ‘์ค„์„ ์ œ๊ฑฐํ•˜์˜€๋‹ค. ๊ฐ•์กฐ๋˜๋„๋ก ํฌ๊ธฐ๋ฅผ ํ‚ค์šฐ๊ณ , ๋ณผ๋“œ ํšจ๊ณผ๋ฅผ ์ ์šฉํ–ˆ๋‹ค.

 

๐ŸŽพ๊ฒฐ๊ณผ

โญ๋ฐฐํฌํ•˜๊ธฐ

์™„์„ฑ๋œ ์‚ฌ์ดํŠธ๋ฅผ netlify๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌํ•ด๋ณด์•˜๋‹ค.

 

๋ฐฐํฌ ๋งํฌ

 

TennisMall

 

tennismarket.netlify.app

 

Netlify

์ •์  ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋ฌด๋ฃŒ๋กœ ํ˜ธ์ŠคํŒ… ํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์ด๋‹ค.

Github, GitLab ๋“ฑ๊ณผ ์—ฐ๋™ํ•˜๊ฑฐ๋‚˜, ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์—…๋กœ๋“œํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์œผ๋กœ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ์ ์ด ์žˆ๋‹ค.

  • ๋ฌด๋ฃŒ ํ˜ธ์ŠคํŒ…
  • ์ž๋™ ๋ฐฐํฌ: ์ €์žฅ์†Œ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ ํ‘ธ์‹œํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋ฐฐํฌ๋œ๋‹ค.
  • ์ปค์Šคํ…€ ๋„๋ฉ”์ธ: ์ž์‹ ๋งŒ์˜ ๋„๋ฉ”์ธ์„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ณ , ๋˜ ๋„๋ฉ”์ธ์„ ๊ตฌ๋งคํ•˜์ง€ ์•Š์•„๋„ ์›ํ•˜๋Š”๋Œ€๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.(.netlify.app)
  • HTTPS ์ง€์›: ๋ณด์•ˆ ์—ฐ๊ฒฐ์„ ๊ธฐ๋ณธ ์ œ๊ณตํ•œ๋‹ค.
  • ํผ ์ฒ˜๋ฆฌ: ๋ฐฑ์—”๋“œ ์—†์ด ํผ ์ œ์ถœ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‚˜๋Š” ์ง์ ‘ ์ฝ”๋“œ๋ฅผ ์˜ฌ๋ ค ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

 

1. Netlify ๋กœ๊ทธ์ธ

2. Add New Site -> Deploy Manualy ์„ ํƒ

3. ํŒŒ์ผ ์„ ํƒ ํ˜น์€ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ

 

4. Domain Management -> Options -> Edit Site Name์—์„œ ์‚ฌ์ดํŠธ ์ด๋ฆ„ ์ˆ˜์ •

 

 

index.html ํ•„์ˆ˜ 

index.html์€ ์›น ์„œ๋ฒ„๊ฐ€ ๋””๋ ‰ํ† ๋ฆฌ์— ์ ‘๊ทผํ–ˆ์„ ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฐพ๋Š” ํŒŒ์ผ

๋ฐฐํฌ๋ฅผ ํ•  ๋•Œ๋Š” index,html ํŒŒ์ผ์ด ๋ฌด์กฐ๊ฑด ๊ผญ ๋ฌด์กฐ๊ฑด ํ•˜๋‚˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” index,html์ด ์—†์–ด๋„ ๋ชจ๋“  ํŽ˜์ด์ง€๊ฐ€ ๋ฌธ์ œ ์—†์ด ๋ณด์ด์ง€๋งŒ, ๋ฐฐํฌ ์‹œ์—๋Š” ์•„์˜ˆ ํ”„๋กœ์ ํŠธ ์‹œ์ž‘์ ์„ ๋ชป ์ฐพ๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค.


main.html๋งŒ ๊ฐ•์‚ฌ๋‹˜์ด ์•Œ๋ ค์ฃผ์‹œ๊ณ , CSS๋Š” ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณด๋ผ๊ณ  ํ•˜์…จ๋‹ค. ์ตœ๋Œ€ํ•œ ์ฃผ์–ด์ง„ ์˜ˆ์‹œ๋Œ€๋กœ ๋งŒ๋“ค์–ด ๋ณด์•˜๋Š”๋ฐ, ๋ง‰์ƒ ๊ฐ•์‚ฌ๋‹˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ˆ ๋‚ด ๊ตฌํ˜„ ๋ฐฉ์‹์ด๋ž‘ ๋งŽ์ด ๋‹ค๋ฅธ ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋‹ค. ๋‚˜๋Š” flexbox๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ ฌํ–ˆ๋Š”๋ฐ, ๊ฐ•์‚ฌ๋‹˜์€ margin-left, margin-right auto๋กœ ํ•˜์—ฌ ์ •๋ ฌํ•œ ๊ฒƒ๋„ ๊ทธ๋ ‡๊ณ , ๋ผ์ผ“ ์นด๋“œ ๋ฐฐ์น˜ ๋ถ€๋ถ„์—์„œ๋„ ๊ฝค๋‚˜ ์ฐจ์ด๊ฐ€ ์žˆ์—ˆ๋˜ ๋“ฏ. ์—ฌ๋Ÿฌ ๋ฐฉ์‹์„ ๋น„๊ตํ•˜๊ณ  ๊ฐ๊ฐ ์žฅ๋‹จ์ ์„ ์•Œ ์ˆ˜ ์žˆ์–ด์„œ ๋งŽ์€ ๋„์›€์ด ๋˜์—ˆ๋‹ค.