Conversation
index.html
Outdated
| <div class="container"></div> | ||
| <div class="container"> | ||
| <span class="title">To Do List</span> | ||
| <!-- <form action=""> --> |
There was a problem hiding this comment.
불필요한 코드나 console.log 등은 나중에 지워 주세요!
index.html
Outdated
| placeholder="할 일을 입력하세요" | ||
| onkeydown="EnterKeyDown()" | ||
| /> | ||
| <button id="addBtn">+</button> |
There was a problem hiding this comment.
자바스크립트에선 카멜케이스를 주로 사용한다고 들었는데 왜 가끔은 케밥케이스를 사용하지? 라는 의문을 가졌었는데 덕분에 궁금증이 해결됐습니다! 그리고 축약형이 무조건 좋은 줄 알았는데 아니었네요😮 피드백 감사합니다!
There was a problem hiding this comment.
컨벤션은 습관으로 들이도록 노력해야겠어요! 덕분에 복습 합니다 ㅎㅎ
| /> | ||
| <button id="addBtn">+</button> | ||
| <!-- </form> --> | ||
| <div class="division-line"></div> |
index.html
Outdated
| </div> | ||
| <div class="division-line"></div> | ||
|
|
||
| <div class="done-box"> |
There was a problem hiding this comment.
그리고 <section> 등의 Semantic tag를 사용해 보는 것도 좋을 것 같아요~!
script.js
Outdated
| const todoList = document.querySelector('#todoList'); //TO DO | ||
| const doneList = document.querySelector('#doneList'); //DONE | ||
| const todoTitle = document.querySelector('.todo-box .list-title'); // TO DO 제목 | ||
| const doneTitle = document.querySelector('.done-box .list-title'); // DONE 제목 |
There was a problem hiding this comment.
camelCase와 kebab-case를 섞어서 사용하셨는데 혹시 어떤 기준으로 나누신 건가요? id랑 class 차이일까요?!
There was a problem hiding this comment.
어떠한 기준을 가지고 나눈건 아니고 원래 기본적으로 camelCase를 사용하는데 전에 자바스크립트 강의를 들었을 때 container의 id나 class명을 kebab-case로 썼던 기억이 있어서 저도 모르게 container나 box는 kebab-case로 사용한 것 같습니다..!🫨
| display: flex; | ||
| justify-content: center; | ||
| align-items: center; | ||
| background-image: linear-gradient( |
style.css
Outdated
| padding: 24px; | ||
| padding-top: 30px; |
There was a problem hiding this comment.
| padding: 24px; | |
| padding-top: 30px; | |
| padding: 30px 24px 24px 24px; |
이렇게 줄여 쓸 수도 있습니다! 순서대로 상 우 하 좌 (시계방향!)
| button { | ||
| border: none; | ||
| width: 25px; | ||
| height: 40px; | ||
| font-size: 20px; | ||
| background-color: white; | ||
| } |
There was a problem hiding this comment.
버튼을 사용할 때에는 cursor: pointer로 커서를 변경하는 디테일도 챙기면 좋을 것 같습니다! 😉
참고자료 - 커서 속성
| button:hover { | ||
| color: lightsteelblue; | ||
| transition: 0.2s; | ||
| } |
There was a problem hiding this comment.
오호 lightsteelblue 이 색상 예쁘네요
| } | ||
|
|
||
| ul li { | ||
| cursor: pointer; |
Yunil-dev
left a comment
There was a problem hiding this comment.
디자인 감각이 돋보이는 프로젝트였습니다! 고심한 만큼 코드도 더 깔끔해 보이네요! 앞으로 함께 잘 성장해 봅시다 🥰
index.html
Outdated
| placeholder="할 일을 입력하세요" | ||
| onkeydown="EnterKeyDown()" | ||
| /> | ||
| <button id="addBtn">+</button> |
There was a problem hiding this comment.
컨벤션은 습관으로 들이도록 노력해야겠어요! 덕분에 복습 합니다 ㅎㅎ
script.js
Outdated
|
|
||
| function EnterKeyDown() { | ||
| //엔터키로 추가 | ||
| if (window.event.keyCode === 13 && todoInput.value !== '') { |
There was a problem hiding this comment.
저도 동일한 방법으로 키 입력을 감지하는 방법을 알아보다가 <input>태그를 <form>태그로 감싸 사용하면 엔터키 입력으로 추가가 가능해진다는 사실을 알고 바로<form>태그 사용했습니다. 제 기준에는 <form>태그가 편하더라구요 😁
| doneList.appendChild(li); | ||
| } else { | ||
| todoList.appendChild(li); | ||
| } |
There was a problem hiding this comment.
toggle메서드를 이용해서 요소를 숨기거나 보이게 하는 방법도 매우 좋은 것 같네요! 적용해봐야겠어요 ~
script.js
Outdated
|
|
||
| //삭제 | ||
| btn.addEventListener('click', (e) => { | ||
| e.stopPropagation(); |
There was a problem hiding this comment.
헉 저도 이벤트 전파 때문에 e.stopPropagation사용했는데 태그를 세분화해서 클릭이벤트를 적용하면 전파가 일어나지않겠군요 👍🏻👍🏻
jissssu
left a comment
There was a problem hiding this comment.
윤정님! 코드가 간결하고 명확하게 작성되어 있어, 전반적인 흐름이 이해하기 좋았던 것 같습니다! 덕분에 윤정님 코드 보면서 몰랐던 부분도 또 배워갑니다! 앞으로도 좋은 개발 기대하겠습니다! 👏
script.js
Outdated
| function updateCount() { | ||
| const todoCnt = todoList.children.length; | ||
| const doneCnt = doneList.children.length; | ||
|
|
||
| todoTitle.textContent = `📝 TO DO (${todoCnt})`; | ||
| doneTitle.textContent = `✔️ DONE (${doneCnt})`; |
There was a problem hiding this comment.
updateCount 함수 코드가 단순하면서도 필요한 기능을 효과적 작성하신 것 같아요! 저도 간결하고 좋은 코드 작성하고싶어요!
script.js
Outdated
|
|
||
| function EnterKeyDown() { | ||
| //엔터키로 추가 | ||
| if (window.event.keyCode === 13 && todoInput.value !== '') { |
There was a problem hiding this comment.
window.event.keyCode도 키보드 이벤트가 발생했을 때 어떤 키가 눌렸는지 확인하기 위해 사용되는 속성이라는걸 처음 알았네요! 위에 주현님 코드리뷰도 보면서 어떤 메소드가 더 좋은건지 덕분에 배워갑니다!
| font-family: 'LINESeedKR-Th'; | ||
| src: url('https://fastly.jsdelivr.net/gh/projectnoonnu/noonfonts_11-01@1.0/LINESeedKR-Th.woff2') | ||
| format('woff2'); |
There was a problem hiding this comment.
저도 폰트 적용해야하는데 어떤식으로 적용할지 잘 몰랐던 것 같아요! 다음에 저도 이런식으로 적용해야겠어요!
| input:focus { | ||
| outline: none; | ||
| border-color: lightsteelblue; | ||
| transition: 0.2s; |
There was a problem hiding this comment.
해당 css 속성은 저도 몰랐던 부분이네요! 윤정님 코드 보면서 하나 더 알아갑니다!
| } | ||
|
|
||
| #doneList li.complete { | ||
| text-decoration: line-through; |

안녕하세요! LG U+ 유레카 프론트엔드 1기 고윤정입니다.
걱정반 설렘반으로 시작했던 첫 과제가 끝났습니다..! 과제를 진행하면서 자바스크립트 실력이 많이 부족하구나를 느꼈습니다🥲
역시 머리로 하는 구현과 직접하는 구현은 하늘과 땅 차이네요.. CSS도 생각보다 시간이 많이 걸린다는 점을 새로 깨달았습니다 하하
그래도 과제를 진행하면서 전보다 조금 성장한 느낌이라 기쁩니다!!
계속해서 꾸준히 JS 공부 해나가겠습니다💪 화이팅
📎 알게 된 부분
📎 개선하고 싶은 부분
📎 Key Questions
DOM이란 무엇인가요?
JavaScript로 DOM을 조작하는 방법은 어떤 것이 있나요?
Semantic tag에는 어떤 것이 있으며, 이를 사용하는 이유는 무엇일까요?
Flexbox Layout은 무엇이며, 어떻게 사용하나요?
📎 배포
Vercel을 사용하여 배포하였습니다.

https://vanilla-todo-git-jejukyj-ko-yoonjeongs-projects.vercel.app/
결과 화면 🔽