[Mission 4~5] ๊ตฌํ (์ถ๊ฐ ๊ตฌํ ์ฌํญ)
โจ ๊ตฌํ ๊ธฐ๊ฐ : 11/24~25
โ๏ธ ์ ํ ์์ ์ ๋ณด ์ฌ์ด ์ธ๋ก ์ ์ ํํ
[detail.html]<section class="main"> <hr class="between"> </section>
[detail.css]
- width์ height๋ก ๊ธธ์ด ์กฐ์ , border-left: dashed๋ก ์ ์ ํํ.main .between { background-color: #a0a0a0; border: 0; border-left: 1px dashed #ffffff; width: 1px; height: 100px; margin: -135px 0 0 335px; }
โ๏ธ ๋ฆฌ๋ทฐ ๋๊ธ ์ฐฝ ๊ตฌํ
[detail.html]
- ๋๊ธ ์ ์ฒด ๊ฐ์ธ๋ div ์์ span ํ๊ทธ๋ก ์์ด๋์ ๋ด์ฉ ๊ตฌ๋ถํ์ฌ ๊ตฌ์ฑํด์ค
- input ํ๊ทธ์ placeholder ์ง์ <div class="review"> <div class="commentText"><span class="id">coffee_lover </span><span class="text">๋๋ฌด ๋ง์์ด์!</span></div> <div class="commentText"><span class="id">CHOCO7 </span><span class="text">์ค๋๋ ํ์ดํธ ์ด์ฝ๋ฆฟ ๋ชจ์นด๋ฅผ ๋ง์๋ฌ ๊ฐ๋๋ค.</span></div> <div class="commentText"><span class="id">legend_dev </span><span class="text">์ง์ง ํ์ดํธ ์ด์ฝ๋ฆฟ ๋ชจ์นด๋ ์ ์ค์ด๋ค. ์ง์ง ํ์ดํธ ์ด์ฝ๋ฆฟ ๋ชจ์นด๋ ์ ์ค์ด๋ค. ์ง์ง ํ์ดํธ ์ด...</span></div> <div class="writeComment"> <!--์ ๋๊ธ ์ ๋ ฅ ๋ ๊ณต๊ฐ--> </div> <div> <input class="comment" placeholder="๋ฆฌ๋ทฐ๋ฅผ ์ ๋ ฅํด์ฃผ์ธ์."> </div> </div>
โ๏ธ footer ํ๊ทธ ํ๋จ ๊ณ ์
[detail.css]
- ๋ถ๋ชจ ์์ฑ์ relative, ์์ ์์ฑ์ธ footer์ absolute ์ ์ฉ
- min-height: 100% ์ ์ฉํ์ฌ ์ปจํ ์ธ ์์ด ์์๋ ํ๋ฉด์ ๊ฝ์ฐฐ ์ ์๋๋ก ๋ง๋ฆhtml { position: relative; min-height: 100%; margin: 0; } body { min-height: 100%; } footer { position: absolute; width: 100%; display: flex; align-items: center; justify-content: space-around; }
[ Result ]
- footer ์๋ copyright ๋ถ๋ถ ์ถ๊ฐ ๊ตฌํ
footer์ ์์๋ค์ ํ ๋ฒ์ ๋ชจ๋ ์ ๋ ฌํด์ค ์ ์๋ ๋ฌธ์ ๊ฐ ์๊ฒจ ์๋ ์ฌ์ง๊ณผ ๊ฐ์ด ๋ฉ๋ด๋ฅผ ํ๋์ฉ ๋๋์ด div๋ฅผ ์ค์ ํ๊ณ flex ์์ฑ์ ์ฌ์ฉํด ์ ๋ ฌํด์ฃผ์๋ค.
โ๏ธ ์ข์์ ๋ฒํผ ๊ธฐ๋ฅ ๊ตฌํ
[detail.html]<div class="heart"> <i class="far fa-heart fa-lg white"></i> <!--๋น ํํธ ์์ด์ฝ--> <i class="fas fa-heart fa-lg red hide"></i> <!--์ฑ์์ง ํํธ ์์ด์ฝ--> </div>
[detail.css]
.hide { display: none; }
[detail.js]
const dislikeBtn = document.querySelector('.white'); const likeBtn = document.querySelector('.red'); dislikeBtn.onclick = function () { // ๋นํํธ ํด๋ฆญํ์ ๋ dislikeBtn.classList.add('hide'); // ๋นํํธ์ .hide ์ ์ฉ likeBtn.classList.remove('hide'); // ๋นจ๊ฐํํธ์ ์ ์ฉ๋์ด ์๋ .hide ์ญ์ }
[ Result ]
- ํํธ์ ๋ง์ฐ์ค ํธ๋ฒ ์ cursor: pointer๋ก ๋ณ๊ฒฝ
โ๏ธ ๋๊ธ ์ถ๊ฐ ๊ธฐ๋ฅ ๊ตฌํ
[detail.html]<div class="review"> <p class="reviewTitle">๋ฆฌ๋ทฐ</p> <hr> <div class="commentText"> <span class="id">coffee_lover </span> <span class="text">๋๋ฌด ๋ง์์ด์!</span> </div> <div class="commentText"> <span class="id">CHOCO7 </span> <span class="text">์ค๋๋ ํ์ดํธ ์ด์ฝ๋ฆฟ ๋ชจ์นด๋ฅผ ๋ง์๋ฌ ๊ฐ๋๋ค.</span> </div> <div class="commentText"> <span class="id">legend_dev </span> <span class="text">์ง์ง ํ์ดํธ ์ด์ฝ๋ฆฟ ๋ชจ์นด๋ ์ ์ค์ด๋ค. ์ง์ง ํ์ดํธ ์ด์ฝ๋ฆฟ ๋ชจ์นด๋ ์ ์ค์ด๋ค. ์ง์ง ํ์ดํธ ์ด...</span> </div> <div class="writeComment"> <!--๋๊ธ ์ถ๊ฐ ๋ ๊ณต๊ฐ--> </div> <div> <input class="comment" type="text" placeholder="๋ฆฌ๋ทฐ๋ฅผ ์ ๋ ฅํด์ฃผ์ธ์." /> </div> </div>
[detail.css]
.writeComment { font-size: 14px; margin-left: 21px; } .userId { font-weight: bold; }
[detail.js]
const commentInput = document.querySelector('.comment'); function uploadComment() { const box = document.querySelector(".writeComment"); // ๋๊ธ ์ ์ฒด ์์๋ฅผ ๊ฐ์ธ๋ ๋ฐ์ค ์์ฑ // ๋๊ธ ์์ ์์ฑ const comments = document.createElement("div"); const userId = document.createElement("span"); const review = document.createElement("span"); // ํด๋น ๋๊ธ ์์๊ฐ ๋ํ๋ผ ๊ฒ html์์ ์ ํ comments.classList.add("writeComment") userId.classList.add("userId"); review.classList.add("text"); userId.innerHTML = "luneah "; // userId ์ง์ ํ์ฌ ๋๊ธ ๋ฌ๋ฉด ID ์นธ์ ๋จ๊ฒ ํจ review.innerText = commentInput.value; // input์ ๋ค์ด์จ ๊ฐ ๋ถ๋ฌ์ด // appendChild ์์ฑ์ผ๋ก ์์ ์์๋ก ์ถ๊ฐํด์ค comments.appendChild(userId); comments.appendChild(review); box.appendChild(comments); }
- ์๋ฌด๊ฒ๋ ์ ๋ ฅํ์ง ์์์ ๋๋ ์ํฐ๋ฅผ ๋๋ฌ๋ ์ ๋ก๋ ๋์ง ์๊ฒ ๊ตฌํํจ
//์ํฐํค๋ก ๋๊ธ ๋ฌ๊ธฐ commentInput.addEventListener("keypress",(e) => { if(e.keyCode === 13 && commentInput.value.length !== 0){ // ์ํฐํค๋ฅผ ๋๋ฅด๊ณ , input์ ๋ค์ด์จ ๊ฐ์ ๊ธธ์ด๊ฐ 0์ด ์๋ ๋ ์ ๋ก๋ ๊ฐ๋ฅํ๊ฒ ํจ uploadComment(); commentInput.value = ""; // ์ ๋ก๋ ํ input ์นธ ๊ณต๋ฐฑ์ผ๋ก ๋ง๋ฆ } });
[Result]
input์ ๋๊ธ์ ์ ๋ ฅํ์ ๋ ๋๊ธ์ด ์ถ๊ฐ๋ ๊ณต๊ฐ์ ์ก์์คฌ์ผ๋ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋ชฐ๋๋ค. userId์ text๋ฅผ ๋ชจ๋ ๋ด์ ์ ์๋ div๋ฅผ ์์ฑํด์ค์ ๋ด์ผ๋ฉด ๋๊ฒ ๋ค๊ณ ์๊ฐํ๊ณ ์ด์ ๊ดํ ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด์๋ค. createElement์ appendChild, innerHTML๊ณผ innerText์ ์ฐจ์ด์ ๋ฑ์ ์ ์์ง ๋ชปํด์ ์ฌ์ฉํ์ง ๋ชปํ๋๋ฐ ๊ฒ์์ ํตํด ์ฐ์๊ณผ ์ฐจ์ด๋ฅผ ์ธ์งํ๊ณ ์ด๋ฅผ ํ์ฉํด ๊ตฌํํ๋ค.