๐ปํจ์คํธ์บ ํผ์คX์ผ๋์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ ๋ถํธ์บ ํ_2์ฐจ๊ณผ์ ํ๊ณ ์์ฑ
๐ปํจ์คํธ์บ ํผ์คX์ผ๋์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ ๋ถํธ์บ ํ_2์ฐจ๊ณผ์ ํ๊ณ ์์ฑ
Aug 28, 2023
๐ป HTML&CSS ํด๋ก ์ฝ๋ฉ ๊ณผ์ ํ๊ณ ๋จ๊ธฐ๊ธฐ !
์ฌ์ฉ ์คํ | ๊ฐ๋ฐ ๊ธฐ๊ฐ | ๋ฌด์จ ๊ณผ์ ? |
HTML, CSS, Netlify, Firebase, FireStore, | 2023-08/08~2023/08/18ๆฅ | ์ง์ ์ฌ์ง ๊ด๋ฆฌ ์๋น์ค with Friebase || AWS S3 |
My Site
- ์ ๊ฐ ๊ฐ๋ฐํ LCK ์ ์ ํ๋กํ ๊ด๋ฆฌ ํ์ด์ง ์ ๋๋ค.
- ์ต๋ํ ๊น๋ํ๊ณ , ๊ธฐ๋ฅ ๊ตฌํํ๋ ๋ฐ์ ์์ด ๋ฌธ์ ๊ฐ ์๊ฒ๋ ๋ง๋ค๊ณ ์ถ์๋ค.
++ ๊ธฐ๋ฅ
- Firebase๋ฅผ ์ด์ฉํ LCK ์ ์ ํ๋กํ ๋ฑ๋ก ๋ฐ ์ญ์ ์์ ๊ธฐ๋ฅ
- ์ฝ๊ฐ์ Animation
์ฐ์ , ํผ๋๋ฐฑ ๋ฐ์ ๋ถ๋ถ์ ๊ฒํ ํด๋ณด์ !
๊ฐ๋
์ฑ์ด ์กฐ๊ธ ๋จ์ด์ง๋ ์์์ ๋ฐฐ๊ฒฝ๊ณผ ํฐํธ ์์์ธ ๊ฒ ๊ฐ๋ค.
- ์ด ๋ถ๋ถ์ ๋ํ ์ธ์ฌ์ดํธ๋ ์ฐ์ , LCK๋ผ๋ ๊ตญ๋ด ๋ํ๋ฆฌ๊ทธ์ ๋ํ์์ ๊ทธ๋๋ก ์ฐจ์ฉํด์๋ค. (์กฐ๊ธ์ด๋๋ง ์๋ณธ์ ๋๋์ ๋ด๊ธฐ ์ํด์)
- ๋ํ ๋ค์ํ ์ ๋ฐฐํฉ ๋ฑ์ ์ฐพ์๋ดค๋๋ฐ, ์ ๋ฐฐ๊ฒฝ์์ ์ฐ๋ฉด์, ๊ฐ๋ ์ฑ์ด ๋๋ ํฐํธ ์์์ ์ฌ์ค ์ฐพ๊ธฐ ์กฐ๊ธ ์ด๋ ค์ ๋ค.
- ๊ทธ์ ๋ํ ํด๊ฒฐ์ฑ ์ ๋ง๋ ํ ์ฐพ์ง๋ ๋ชปํ์ง๋ง, ์กฐ๊ธ์ด๋๋ง ๊ฐ๋ ์ฑ์ด ์ข์ CSS๋ก ๋ฐ๊พธ์ด๋ณด์๋ค.
ํ๊ธ ์ฌ์ฉ ๋ณด๋ค๋ ์์ด ์ฌ์ฉ์ด ์ข๋ค.
}) .then((path) => { const playerData = { ํ๋ช : team.value, ------------------------------- playerRef.get().then((snapshot) => { const playerData = snapshot.data(); console.log(playerData); const currentImgURL = playerData.์ฌ์ง;
- ์ด ์ฝ๋์ ๋ํด์ ํผ๋๋ฐฑ์ ๋ฐ์ ๋ถ๋ถ์ ์ผ๋ถ์ด๋ค.
- ์ฌ์ค FireStore, Firebase db๋ฅผ ์ด๋ฒ ๊ณผ์ ๋ฅผ ํ๋ฉด์ ์ฒ์ ์ฌ์ฉํด๋ณด์๋ค.
- ๋น์ฐํ, ์ฒ์์๋ ๋ค์ํ ์ธ์ฌ์ดํธ๋ฅผ ์ฐธ๊ณ ํด๊ฐ๋ฉฐ ์ฝ๋๋ฅผ ๊ฐ๋ฐํ๊ฒ ๋์๊ณ , ๋ณ๋ช ์๋ ๋ณ๋ช ์ผ๋ก
- ์ด๋ ๊ฒ ํ๊ธ๋ก data๋ฅผ ๋ณด๋์ ๋, firestore์ query๋ค๋ก ํ๊ธ๋ก ๋ง๋ค์ด์ง ์์ฑ์ด ๋ค์ด์ ์์ ํ๊ธฐ ํธํ์๊ณ , ์ฒ์ ์์์ ํ๊ธ๋ก ํ๊ธฐ์, ๊ทธ ํ์๋ ํ๊ธ์ ๊ปด๊ฐ๋ฉฐ ์์ ํ ์ ๋ฐ์ ์์๋ค.
- ํ์ง๋ง, ๋ฌผ๋ก ํ๊ธ๋ก ์ฝ๋๋ฅผ ์ง๋ ๋ฌธ์ ๊ฐ ์์์ง๋ง, ๊ฐ๋ฐ์ ํ ๋ ์ข์ง์์ ์ต๊ด์ธ ๊ฒ๋ ๋ง๋ค!
- ๊ทธ๋์, ์ด๋ฒ ๋ฆฌํฉํ ๋ง ์๊ฐ ๋ ํ๊ธ๋ก ์ง์ฌ์ง ์ฟผ๋ฆฌ๋ค์ ์ ๋ถ ์์ด๋ก ๊ณ ์ณ๋์๋ค.
๋ง์ง๋ง ๋ฐ์ ํผ๋๋ฐฑ์,
forEach ์์์ innerHTML์ ํ๊ธฐ ๋ณด๋ค๋
๋ด์ฉ์ ๋ชจ์์ ํ๋ฒ์ ๋ด์ฉ์ ๋ฃ์ด์ฃผ๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
๋ผ๋ ํผ๋๋ฐฑ์ด์๋ค.
์ฝ๋๋ฅผ ๋ณด์!
async function displayProfile() { const listProfile = document.querySelector(".profile_container"); listProfile.innerHTML = ""; await db .collection("person") .orderBy("์์ฑ์ผ") .get() .then((snapshot) => { console.log(snapshot); if (snapshot.size === 0) { listProfile.innerHTML = "<p>๋ฑ๋ก๋ ์ ์๊ฐ ์์ต๋๋ค.</p>"; return; } snapshot.forEach((doc) => { const data = doc.data(); console.log(data); let containerBox = ` <div class ="player_profileContainer"> <img src="${data.์ฌ์ง}" class="player_profilePhoto" onClick="redirectToDetail('${doc.id}')" /> <div class ="overlay"> <div class="player_text">${data.๋๋ค์}</div> <div class="player_text">์ ์ ์์ธ ๋ณด๊ธฐ</div> </div> </div>`; listProfile.innerHTML += containerBox; }); }); }
- ์ด ๋ถ๋ถ์ ๋ํ ๋ด์ฉ์ผ๋ก, ๋ณธ์ธ์ forEach๋ฅผ ๋๋ฆฌ๋ฉด์, ๊ทธ์ ์์ํ๋ ๋ฐ์ดํฐ ๊ฐ๋ค์ ํ๋์ฉ innerHTML๋ก ๋ฃ์ด์ฃผ์๋ค.
- ํ์ง๋ง, ์ด๋ ๊ฒ ํ๋ฉด ํ์คํ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ๋ฑ์ ๋ฌธ์ ๊ฐ ์๊ธธ ์๋ ์๋ค๊ณ ์๊ฐ์ ํ์๊ณ ,
- ํผ๋๋ฐฑ์ ๋ฐ์ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ~
- forEach๋ ๋จ์ํ data๋ค์ ํ๋ฐ ๋ชจ์์ฃผ๋ ์ฉ๋๋ก ์ฌ์ฉํ๊ณ , ๊ทธ ๋ชจ์ฌ๋ ๋ฐ์ดํฐ๋ค์ ํ๋ฒ์ ์ถ๊ฐํ๋ ์ฝ๋๋ก ๋ฆฌํฉํ ๋ง์ ํ๋ค.
async function displayProfile() { const listProfile = document.querySelector(".profile_container"); listProfile.innerHTML = ""; // ์ด๊ธฐํ const profileHTML = []; // ๋ด์ฉ์ ์ ์ฅํ ๋ฐฐ์ด await db .collection("person") .orderBy("์์ฑ์ผ") .get() .then((snapshot) => { console.log(snapshot); if (snapshot.size === 0) { profileHTML.push("<p>๋ฑ๋ก๋ ์ ์๊ฐ ์์ต๋๋ค.</p>"); } else { snapshot.forEach((doc) => { const data = doc.data(); console.log(data); let containerBox = ` <div class ="player_profileContainer"> <img src="${data.์ฌ์ง}" class="player_profilePhoto" onClick="redirectToDetail('${doc.id}')" /> <div class ="overlay"> <div class="player_text">${data.๋๋ค์}</div> <div class="player_text">์ ์ ์์ธ ๋ณด๊ธฐ</div> </div> </div>`; profileHTML.push(containerBox); }); } }); // ๋ฐฐ์ด์ ์ ์ฅ๋ ๋ด์ฉ์ ํ ๋ฒ์ ์ค์ listProfile.innerHTML = profileHTML.join(''); } ์ด๋ ๊ฒ ๋ฆฌํฉํ ๋ง์ ํด๋ณด์๋ค.
์ด๋ฒ ๊ณผ์ ๋ฅผ ํ๋ฉฐ
์์ฌ์ ๋ ๋ถ๋ถ
- ํ์ง๋ง, ์๊ฐ์ ๋ถ๋ค์ ์ฑํ ์ ์ฐธ๊ณ ํ์ฌ ์ด๋ฒ ๋ฆฌํฉํ ๋ง ๊ณผ์ ์์ ์ ์ฉ์ ํด๋ณด๊ฒ ๋์๊ณ , ์ด๋ค ์์ผ๋ก ์งํํด์ผ ํ๋ ์ง ์ ์ ์์๋ค.
์ข์๋ ๋ถ๋ถ
- ๋ํ ๋ค์ํ ๋ถ๋ค์ ์ฝ๋๋ฅผ ๋ฆฌ๋ทฐํ๊ณ ์ฐธ๊ณ ํ๋ฉด์ ๋ ๋ง์ด ๋ฐฐ์ธ ์ ์๋ ํ๊ฒฝ์ด ์ข์๋ ๊ฒ ๊ฐ๋ค.
๋์๊ฐ์ผํ ๋ฐฉํฅ
Share article