개인 공부를 위해 작성했습니다
🎁무언가 결과가 눈으로 직접 보이니 뿌듯하기도 하고, 무언가 구현했다는 것에 신기하기도 하고, 의도한대로 구현되지 않은 점은 아쉽기도 하고.. 그렇지만 내겐, 눈으로 확인되는 첫 결과이기에 선물같았던 Westagram🎀
getBoundingClientRect()
const onAdd = () => {
const comment = textArea.value;
const newDiv = document.createElement('div');
newDiv.className = 'delList'; // 댓글 삭제 기능을 위해 className 추가
commentList.append(newDiv);
// 새로 생성한 div에 코드 통째로 밀어넣기
newDiv.innerHTML = `<div><span>yurim4545</span>${comment}<span class="delBtn"><i class="fas fa-times"></i></span></div><button><i class="far fa-heart"></i></button>`;
textArea.value = ''; // 입력창 초기화
addBtn.className = 'addBtnReset'; // 게시 버튼 비활성화를 위한 className 추가
}
querySelectorAll
을 사용하여 요소를 배열에 담아 반복문으로 이벤트를 추가하는 방법을 알게 되어, 보다 효율적인 코드 작성을 위해 더 공부해야겠다....ㅠㅠ 😭textArea.addEventListener('keyup', (e) => {
addBtn.className = 'addBtnColor';
if (e.keyCode === 13 ) {
onAdd ();
}
});
addBtn.addEventListener('click', () => {
onAdd ();
})
i tag
바꿔치기로 구현.commentList .addEventListener('click', (e) => {
if (e.target.className == 'far fa-heart') {
const heart=e.target.parentNode;
heart.innerHTML = `<i class="fas fa-heart"></i>`;
heart.style.color = 'red';
}
})
.includes()
조건에 맞는지 확인해서.filter()
조건에 맞는 값만 다시 배열로 리턴해서.forEach()
배열 마다 돌면서 검색된 리스트 구현const idArr = ['yurim', 'wecode01기', 'wecode_bootcamp', 'wecode10기', 'wecode20기', 'BTS', 'bts'];
const searchResult = idArr => {
const idFilter = idArr.filter(x => x.includes(search.value))
idFilter.forEach(elem => {
const newDivList= document.createElement('li');
searchList.append(newDivList);
newDivList.innerHTML = `
<a href="#"><img alt="bts" src="imgs/btsjpg.jpg" /><div><div><p>${elem}</p><p>${elem} world</p></div><button class="searchDel">×</button></div></a>
`;
});
}
profileImg.addEventListener('click', () => {
profilePage.style.display = "block";
})
tagName
또는 className
은 어떻게 선택되게 할 수 있을까? 앞으로 추가로 공부해야할 부분!!!! ⭐⭐⭐window.addEventListener('click', (e) => {
if (e.target.tagName !== 'IMG'){
profilePage.style.display = "none"
}
})
getBoundingClientRect()
window를 기준으로 특정 엘리먼트의 위치 값 구하는 함수window.addEventListener('resize', () => {
let x = article.getBoundingClientRect();
aside.style.left = `${x.left+660}px`;
})
.remove()
댓글 삭제 기능 구현하며 알게된 속성. 클릭한 이벤트 타겟의 상위 요소를 삭제하기 위해 사용했다commentList.addEventListener('click', (e) => {
if (e.target.className == 'fas fa-times') {
const delList =e.target.parentNode;
delList.parentNode.parentNode.remove();
}
})
리팩토링은 소프트웨어의 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법
- 이미지가 로딩되지 않을 경우 alt 속성에 적힌 값이 보여짐
- 시각장애인의 경우 alt 속성을 통해 어떤 이미지가 보여지는지 알 수 있음
- SEO 검색엔진 최적화에서 어떤 img인지 인식하는 코드는 alt 속성임
display:block;
부여하거나 불필요하게 width:100%
를 부여하지 말자!참고자료_CSS Default Values Reference
최소한 9가지 항목은 꼭 체크하고 리뷰 요청하자!
✅ 목표!