์ง๊ธ๊น์ง ๋ฐฐ์ด 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 ํ ์ด๋ธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ต์ํ์ ์คํ์ผ๋ง ์ ์ฉ๋๊ณ , ๋ ๊ฐ ์ ์ ๋ ๋ฆฝ์ ์ธ ํ ๋๋ฆฌ๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ๋ณด๊ธฐ์ ์ด์์ง๊ฐ ์๋ค.

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 ์ ๋ฆฌ
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๋ก ํ์ฌ ์ ๋ ฌํ ๊ฒ๋ ๊ทธ๋ ๊ณ , ๋ผ์ผ ์นด๋ ๋ฐฐ์น ๋ถ๋ถ์์๋ ๊ฝค๋ ์ฐจ์ด๊ฐ ์์๋ ๋ฏ. ์ฌ๋ฌ ๋ฐฉ์์ ๋น๊ตํ๊ณ ๊ฐ๊ฐ ์ฅ๋จ์ ์ ์ ์ ์์ด์ ๋ง์ ๋์์ด ๋์๋ค.