css selector는 적용되는 우선순위가 있다
이 때, #first.second {} 와 같이 id, class를 이어서 작성한다면
우선순위 값이 합쳐져서 우선도가 높아진다
굳이 써야하는지는 모르겠다
document(화면 전체)에 이벤트를 추가할 수도 있다
요소마다 이벤트를 추가하는 것은 성능상 좋지 않음으로
부모 요소에 이벤트를 추가한 뒤, event.target으로 찾아서 조작하는 것이 좋다
이벤트 버블링에 의해 부모 태그는 자식 요소에서 발생하는 모든 이벤트를 찾을 수 있다
하나의 HTML파일에 여러 개의 js파일을 import할 수 있다
이 때, import된 파일들은 하나의 코드로 취급하기 때문에
파일의 import순서를 주의해야 한다
변수가 선언된 파일이, 변수를 사용한 파일보다 늦게 나온다면 에러가 발생하기 때문이다
이벤트 리스너를 통해 생성된 event객체는,
이벤트가 발생한 키를 코드로 구분할 수 있다
관련 사이트: https://www.toptal.com/developers/keycode/for/arrow-left
HTML이 아닌 css에서만 정의된 attribute의 경우,
element.style.attribute로 css값을 읽을 수 없다
(원하는 수치를 할당해서 조작은 가능하지만 수치를 읽을 수는 없다)
(js로 수치를 할당한 이후에는 값을 읽을 수 있다)
따라서 css에서 해당 attribute의 값을 찾아야 하는데 이런 경우
<tag style="left: 400px"></tag>)clearInterval()을 사용하지 않아도
setInterval()에 조건부 return을 해주면
원하는 때에 setInterval을 멈출 수 있다
clearnterval()을 해주어야 setInterval()의 동작이 멈춘다
setInterval이 추가되면 어디에 기록, 저장돼서 동작하는건지 궁금하다
방법1. left: (배경 요소의 width / 2) - (정렬할 요소의width / 2)
방법2. left: 50%, margin-left: - (정렬할 요소의 width/2)
랜더링 최적화를 위하여 사용하는 API이다
addEventListener()의 콜백에는 콜백이 즉시 실행되는 것을 막기 위하여
소괄호를 사용하지 않고 함수명만 넣게 된다
이 때, 인자를 넣어줘야 한다면, function(event){ callback(event) }와 같이
function키워드로 한 번 감싸주면 인자를 전달할 수 있다
이벤트 객체를 사용해야 한다면
function인자와 callback의 매개변수를 통해 event객체를 전달한다
클래스와 인스턴스는 속성이 같은 정보의 프로퍼티나 메서드를
한 곳에 모아서 관리하기 위하여 사용한다