์นด์นด์ค ํ๋ ์ฆ ์ต ํด๋ก ์ฝ๋ฉํ๊ธฐ
๐ ์์ ์ด ์ํ๋ ์ฌ์ดํธ ๋ ์ด์์ ํด๋ก
๐ง KaKao Shop Clone Coding ๐ง
๊น ํ๋ธ ์ฃผ์ : https://github.com/PenguinKKIM/kakao-shop-clone
ํ์ ์๊ตฌ์ฌํญ
- ๊ณผ์ ์ ๋ํ ์ค๋ช
์ ํฌํจํ
README.md
ํ์ผ์ ์ ๊ณตํ์ธ์! - ๊ณผ์ ๊ฒฐ๊ณผ์ ๋น๊ตํ ์ ์๋ ์ค์ ์ฌ์ดํธ(ํ์ด์ง)์ ์ฃผ์๋ฅผ ๋ช
์ํ์ธ์!
- ์นด์นด์ค ํ๋ ์ฆ ์ต์ ํด๋ก ์ฝ๋ฉ ํ์ต๋๋ค.
- https://store.kakao.com/kakaofriends
- ๊ณผ์ ์์ ์ฌ์ฉํ ํ๋ก์ ํธ ํด๋/ํ์ผ์ด ๋ชจ๋ ํฌํจ๋ผ์ผ ํฉ๋๋ค, ์ผ๋ถ ํ์ผ๋ง ์ ์ถํ์ง ๋ง์ธ์!
- ์ค์ ์๋น์ค๋ก ๋ฐฐํฌํ๊ณ ์ ๊ทผ ๊ฐ๋ฅํ ๋งํฌ๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
์นด์นด์คํก ์คํ ์ด ์นด์นด์คํ๋ ์ฆ
์ผ์ ์ ์ฆ๊ฑฐ์์ ์ ํ๋๋ผ์ดํ์คํ์ผ ๋ธ๋๋
store.kakao.com
์นด์นด์คํก ์คํ ์ด ์นด์นด์คํ๋ ์ฆ
์ผ์ ์ ์ฆ๊ฑฐ์์ ์ ํ๋๋ผ์ดํ์คํ์ผ ๋ธ๋๋
store.kakao.com
โฐ์ด ์ฌ์ดํธ๋ฅผ ํด๋ก ์ฝ๋ฉ ํ๊ฒ ๋ ๊ณ๊ธฐ
- ํ์์ ์นด์นด์ค ์บ๋ฆญํฐ์ ๊ด์ฌ์ด ๋ง์ ์์ฃผ ๊ฐ๋ ์ฌ์ดํธ์ ๋ ์ด์์์ ์ดํด๋ณด๋, ๊ฐ์ ์์ ๋ฐฐ์ด CSS ๋ฌธ๋ฒ๋ค์ ์ ์ ํ ๋ค ์ฌ์ฉํ ์์์๊ฑฐ๊ฐ์ ์ ์ ํ์์ต๋๋ค.
โฐCLONE WEBPAGE PREVIEW
- ๋ณธ ์ฌ์ดํธ์ ์ด์ง ๋ค๋ฅด๊ฒํ์ต๋๋ค.
- ์๋ ์ฌ์ดํธ์๋ hover ํ๋ฉด ์๋ฌด์ผ๋ ์ผ์ด๋์ง ์๋๊ฒ์ด ๋๋ถ๋ถ์ธ๋ฐ, ์ด๋ฏธ์ง์ hover ํ๋ฉด ์กฐ๊ธ ์ปค์ก์ผ๋ฉด ์ข๊ฒ ๋ค,
- ์คํ๋ฒ ์ค ํด๋ก ์ฝ๋ฉ ํ์ ๊ฑฐ๋ผ ์์ ๋ฑ์ง๊ฐ ์์์ผ๋ฉด ์ข๊ฒ ๋ค ์ถ์ด ๋ช๊ฐ ์ถ๊ฐ ํ์ต๋๋ค.
โฐ์ฌ์ฉํ ์ฃผ์ ๋ฌธ๋ฒ
๐์ต์๋จ Nav bar
body์ ์ต์๋จ์ ์๋ ์ด๋ฏธ์ง์ ๋๋ค. ๊ธฐ์กด ๋ ๊ฑฐ์ ์ฝ๋์์๋
position: fixed;
๋ก ๊ตฌํ์ด ๋์ด์๋๋ฐ,
fixed ๋ก ํ๋ฉด absolute ๋ฅผ ์ด๊ฒ์ฒ๋ผ ์์๊ฐ ๊ฒน์น๋ ์ผ์ด ์์ด, ๋ฐ์ ์์์ height ๋ magin-top ์ ๋๊ฒ ์ก์์ผํ๋๊ฒ ์กฐ๊ธ ๋ถํธ ํ์ฌ,
๋ค๋ฅธ ๋ฌธ๋ฒ์ ์ฐพ์๋ณด๋ position: sticky;
๋ก ํ๋ฉด ๊ฐ๋จํ ํด๊ฒฐ๋์ด ํด๋น ๋ฌธ๋ฒ์ ์ฌ์ฉํ์์ต๋๋ค.
๋ค๋ฅธ์์ ๋ฐ์ ๋ค์ด๊ฐ๋๊ฒ์ ๋๋ ค์ z-index๋ฅผ ์ ์ผ ๋ง์ด ๋นผ์ฃผ์์ต๋๋ค.
.top-nav{
width: 100%;
position: sticky;
top: 0;
display: flex;
justify-content: center;
border-bottom: 1px solid #e5e5e5;
background-color: #ffffff;
z-index: 1000;
}
๐์คํฌ๋กค ์ ๋ฐ๊ฟ๋ณด๊ธฐ
์คํฌ๋กค์ด ๋๋ฌด ๋ชป์๊ฒจ์ ๐ ์์ ํ๋ฒ ๋ฐ๊ฟ ๋ดค์ต๋๋ค.
/* ์คํฌ๋กค์ปฌ๋ฌ ์ค์ ํ๊ธฐ */
.new-item__comps::-webkit-scrollbar{
height: 10px;
background-color: var(--color-jordy)
}
.new-item__comps::-webkit-scrollbar-thumb{
background-color: var(--color-darkgreen)
}
.new-item__comps::-webkit-scrollbar-button{
background-color: yellowgreen;
}
๐Grid ์ฌ์ฉ ํ๊ธฐ
์ค๊ฐ์ ๊ฒฉ์ ์์๋ ๋ ๊ฑฐ์ ์ฝ๋์์๋ display:flex;
๋ก ๋์ด์์๋๋ฐ, display:grid;
๊ฐ ๋์ฑ ์๋ง๋๊ฑฐ๊ฐ์ grid ๋ก ๋ฐ๊ฟ ์์
ํ์ต๋๋ค.
.quicklink-grid{
display: grid;
grid-template-columns: repeat(5,1fr);
grid-template-rows: auto;
gap: 1rem;
justify-content: center;
align-items: center;
justify-items: center;
}
๐๋ฒํผ์ ๋๋ฅด๋ฉด ์ข์์ ํ์ ๋๊ฒํ๊ธฐ
javaScript ์ toggle
์ ์ด์ฉํ์ฌ ๊ทธ๋ ๊ฒ ๋๊ฒ ๋ณด์ด๋๊ฑฐ์ฒ๋ผ ํ์ต๋๋ค.
const likeBtns = document.querySelectorAll('.best-ranking__heart');
likeBtns.forEach(e => {
e.addEventListener('click', () => {
e.classList.toggle('btnActive');
});
});
querySelector
๋ฅผ ์ฐ๋ฉด ๊ทธ ๋ฌธ์์ ์ต์๋จ์ ์์๋ง ์ ํ๋จ์ผ๋ก, querySelectorAll
์ ์ฐ๊ณ forEach
๋ฐ๋ณต๋ฌธ์ผ๋ก addEventListener
๋ฅผ ์ฌ์ฉํ์์ต๋๋ค.
toggle
์ ์ฌ์ฉํ๋ฉด classList.add
๋ฅผ ์ฌ์ฉํ์ฌ ํด๋์ค๋ฅผ ๋ํ๊ณ , ํด๋น ํด๋์ค๊ฐ ์์ผ๋ฉด classList.remove
๋ก ์์ ์ค์ผ ํ์ง๋ง
toggle
์ ์ ์ฐ๋ฉด ํ ์ค ๋ก ์ค์ฌ ๊ฐํธํ๊ฒ ๊ตฌํ ํ ์์์ด ์ฌ์ฉํ์์ต๋๋ค.
๐๊ทธ ์ธ ๊ฐ์์ ๋์จ js ๋ฌธ๋ฒ ์ฌ์ฉ
์คํ๋ฒ ์ค ๊ฐ์์ ๋์จ js api ๋ฌธ๋ฒ์ ๋ณต์ต ํ์ฌ ์ฌ์ฉํด ๋ณด์์ต๋๋ค.
- lodash
- swiper
- gasp
- iframe
โฐ๋๋์
- ๋ ๊ฑฐ์ ์ฝ๋๋ฅผ ํ๋ํ๋ ๋ฏ์ด๋ณด๋ฉฐ ์ฌ๊ธฐ์ ์ด๋ ๊ฒ์ฐ๊ณ ์ด๋ ๊ฒ ์ผ๊ตฌ๋ ์์ธํ ์์์์ด์ ์ข์ ์๊ฐ์ด์์ต๋๋ค.
- JavaScript๋ก ์๋ํ ์ ์๋๊ฒ๋ CSS ๋ก๋ ํ ์์๋ ๋ฌธ๋ฒ์ ์์์์ด ์ฌ๋ฐ์์ต๋๋ค.
โฐ์์ฌ์ด์
- ์ฝ๋๋ฅผ ์ง๋ค๋ณด๋ ๋น์ทํ๊ฒ ์๊ธฐ๊ณ ํฌ๊ธฐ๋ง ๋ค๋ฅธ ์์๊ฐ ๋ง์๋๋ฐ, ์ ์ฒด์ ์ผ๋ก ์์๋ค์ ํ์ธํ๊ณ ํด๋์ค๋ง ๋ค๋ฅด๊ฒ ๋ถ์ฌ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ฉด ์ด๋ ์๊น ์ถ์ต๋๋ค์ค๋ณต๋๋ ํ์ดํ์ด๋ ์ด๋ฏธ์ง ํฌ๊ธฐ๋ง ๋ค๋ฅธ๊ฒ๋ค์ด ๋ง์, ์ฌ์ฌ์ฉํ ์ ์๋ ์์๊ฐ ๋ง์๋๋ฐ ๊ทธ๋ฌ์ง ๋ชปํ๋๊ฒ ํ์ฝ์ต๋๋ค.
- ์ฒ์์ ํ๋ฉด์ ๋ณด๊ณ ์ ์ค๊ณ ํ๋๊ฒ ์ ์ผ ์ต์ ์ผ์ง ๊ถ๊ธํฉ๋๋ค.
- (ํ์ฌ ์ฝ๋๋ ์น์ ๋ณ๋ฃจ ๊ทธ๋ฅ ๋ค ๋ค๋ฅด๊ฒ ํ์ต๋๋ค)
- JavaScript ๋ฅผ ์ข ๋ ๋ง์ด ์ฌ์ฉํ๊ณ ์ถ์์ผ๋, ์์ธํ ๋ชจ๋ฅด๋๊ฒ๋ค์ด ๋ง์ ์ผ๋ ๋ฑ๋
๊ตฌํํ ๋ถ๋ถ์ด ์์ต๋๋ค.
์์ ์ข์์ ๋ฒํผ์ ๊ตฌํํ๊ฑฐ์ ๊ฐ์ด// store-nav const navBtn = document.querySelectorAll('.store-nav__list-comp'); navBtn.forEach( e => { e.addEventListener('click', () => { e.classList.toggle('navActive'); }) })
toggle
๋ก ํ์ผ๋, ์ข์์ ๋ฒํผ๊ณผ ๋ค๋ฅด๊ฒ ๋ค๋น๊ฒ์ด์ ์์๋ ๋ค๋ฅธ ๋ค๋น๊ฒ์ด์ ์์๋ฅผ ํด๋ฆญํ์๋ ํ๋๋ง ํ์ฑํ ๋๊ฒ ํด์ผํ๋๋ฐ ๊ทธ๊ฑธ ๊ตฌํํ์ง ๋ชปํ์ต๋๋ค. ์กฐ๊ธ ๋ ์ฐพ์๋ณด๊ณ ๊ตฌํํด ๋ณผ๊ฑธ ๊ทธ๋ฌ์ต๋๋ค.๐ข -
- ํ์ด์ง๋ฅผ ์ ์ ํ ๋ ์ ๋๋ฉ์ด์ ์ด ๋ ๋ค์ด๊ฐ ํ์ด์ง๋ฅผ ์ ์ ํ์ด์ผํ๋ ์ถ์ต๋๋ค.
- ์ด ์ธ์ ์ธ์ธํ๊ฒ ๋ฐ๊ฒฌํ์ง ๋ชปํ๊ณ ๊ตฌํ ๋ชปํ ๋ถ๋ถ์ด ์์ฝ์ต๋๋ค.
๊ธฐํ๋ฑ๋ฑ
- ํด๋ก ์ฝ๋ฉ์ ์กฐ๊ธ ํด๋ณด๊ธดํ์ง๋ง ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ๋จ๋ค ์ค๋ช ํ๊ณ readme ๋ฅผ ์ธ์ธํ๊ฒ ์์ฑ ํด๋ณธ์ ์ด ์์ด์ ์๋ก์ด ๊ฒฝํ ์ด์์ต๋๋ค.
- ๋งํฌ๋ค์ด ์ธ์ด๋ก ์ด๊ฒ์ ๊ฒ ํด๋ณด๋๊ฒ ์ฌ๋ฐ์์ต๋๋ค.
- ์ฌ์ค ์ด๋ ๊ฒ ์ฅํฉํ๊ฒ์ผ์ง๋ง ์ํ๋์ง๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค... ํผ๋๋ฐฑ ๋ง๋๋ง๋ํด์ฃผ์ธ์ ๊ฐ์ฌํฉ๋๋ค ๐ง