[JavaScript] DOM

17wolfgwang·2023년 9월 23일
0
post-thumbnail

Document Object Model, HTML문서를 객체로 표현한 것. JS에서 HTML 을 제어할 수 있게 해줌.

  • Node / Element Element는 Node에서 상속되어 만들어진 개념이다!
    • Node HTML 요소 뿐 아니라 텍스트, 주석 등 모든 것 의미 ex) console.log(div.childNodes) // NodeList(7) [text, comment, div.child, text … ]
    • Element HTML 요소를 의미 ex) console.log(div.children) // HTMLCollection(2) [div.child, div.child]
  • DOM API
    • document.querySelectorAll() CSS 선택자로 검색한 모든 요소를 ‘NodeList’로 반환. NodeList 객체는 유사배열이지만 .forEach() 메소드를 사용할 수 있다. 유사 배열이기에 다른 배열 메소드는 사용할 수 없지만 배열화 하여 사용할 수 있다. Array.from(nodeList).reverse()
    • N.previousSibling / N.nextSbling // 노드 이전 형제 혹은 형제 노드 반환.

위 코드에서

    const el = document.querySelector(’.child’)
    
    console.log(el.previousSibling) // #text (data : ‘\n ‘) ← 주석 이후 줄바꿈이 있기 때문!
    
    console.log(el.nextSibling) // 텍스트 1 ← 노드는 html 요소 뿐 아니라 모두 포함하기 때문에!
    
  • E.previousElementSibling / E.nextElementSibling 위 메소드와 기능은 비슷하나 html 요소만을 기준으로 한다!
  • E.insertAdjacementElement() 대상 요소의 지정한 위치에 새로운 요소 삽입.

childEl.insertAdjacementElement(’afterbegin’, newEl) → childEl 앞에 newEl 삽입!

  • N.contains() 주어진 노드가 노드의 자신을 포함한 후손인지 bool값 반환
  • N.textContent / E.innerHTML
    • N.textContent : 노드의 모든 텍스트를 얻거나 변경
    • E.innerHTML : 요소의 모든 HTML 내용을 하나의 문자로 얻거나 새로운 HTML 을 지정.
  • E.dataset : 요소의 각 ‘data-’ 속성 값을 얻거나 저장합니다.
  • E.classList : 요소의 class 속성 값을 제어할 수 있음

  • window.getComputedStyle()요소에 적용된 스타일 객체를 반환합니다.
        const el = document.querySelector(’.child’)
        
        const styles = window.getComputedStyle(el)
        
        console.log(styles.width) // 100px
        
        console.log(styles.backgroundColor) // rgb(0, 120, 0)
        
        → [E.style](http://E.style) 의 경우 inline 속성으로 지정된 style만 가져올 수 있으나, 이건 css로 적용된 부분에서도 가져올 수 있다!

** 속성을 부르는 말 : HTML → Attribute / CSS,JS → Property **

  • window.innerWidth / window.innerHeight : 현재 화면(viewport)의 크기를 얻습니다.
  • window.scrollX / window.scrollY : 페이지 좌 상단 기준, 현재 화면의 수평 혹은 수직 스크롤 위치를 얻습니다.
  • window.scrollTo() / E.scrollTo() : 지정된 좌표로 대상(화면, 스크롤 요소)을 스크롤합니다.
        ex) 대상.scrollTo(X좌표, Y좌표)
        
        대상.scrollTo({top: Y, left: X, behavior: ‘smooth‘})
  • E.scrollLeft / E.scrollTop : 스크롤 요소의 좌상단 기준, 현재 스크롤 요소의 수평 혹은 수직 스크롤 위치를 얻습니다.
  • E.offsetLeft / E.offsetTop : 페이지 좌상단 기준, 요소의 위치를 얻습니다.
  • E.getBoundingClientRect() : 테두리 선을 포함한 요소의 크기와 화면에서의 상대 위치 정보를 얻습니다.
profile
새로운 것을 두려워 하지 않고 꾸준히 뭐든 배워나가는 프론트 엔드 개발자 입니다 🧑‍💻

0개의 댓글