id만 알고 querySelector, getElementId 를 이용해서 그 element를 가지고 오면
그 element 자체에 있는 scrollIntoView를 이용해서 스크롤이 가능하게 해준다.
즉, 엘리먼트 자체에 있는 인터페이스로 엘리먼트의 parent 컨테이너에 스크롤이 된다.
이 기능을 사이트에서 navbar를 만들 때 각각의 section으로 스크롤이 되는 기능을 추가하기 위해 사용할 수 있습니다.
<div class="navbar__menu">
<ul class="navbar__menu">
<li class="navbar__menu__item" data-link="#home">Home</li>
<li class="navbar__menu__item" data-link="#about">About</li>
<li class="navbar__menu__item" data-link="#skills">Skills</li>
<li class="navbar__menu__item" data-link="#contact">Contact</li>
</ul>
</div>
이 엘리먼트를 id로 가져와 스크롤하여 각각의 위치로 가게 하기 위해
<script>
const navbarMenu = document.querySelector('.navbar__menu');
navbarMenu.addEventListener('click', (event) => {
console.log(event.target.dataset.link);
const target = event.target;
const link = target.dataset.link;
if(link == null) {
return;
}
console.log(event.target.dataset.link);
const scrollTo = document.querySelector(link);
scrollTo.scrollIntoView();
})
</script>
이와 같이 script 부분을 작성할 수 있습니다.
HTMLElement.dataset 속성도 사용되었는데 이것은 읽기 전용 속성으로 사용자 지정으로 (data-*)을 작성하고
이 내용을 HTML과 DOM에 제공합니다.
각 target의 dataset.* (위 내용에서는 *은 link) 을 작성하면 그 안에 작성한 내용을 읽어 낼 수 있는 것입니다.
<div id="user" data-id="choihaneul9545" data-user="haneul">
위의 데이터를 불러오기 위해
const el = document.querySelector('#user');
el.id === 'user'
el.dataset.id === 'choihaneul9545'
el.dataset.user === 'haneul'
위와 같이 속성을 가져와 내용을 읽어낼 수 있습니다.
'javascript' 카테고리의 다른 글
TIL no.9 - let / const / var 차이 (0) | 2020.08.23 |
---|---|
TIL no.8 - forEach method :JavaScript (0) | 2020.08.23 |
TIL no.7 - appendChild 함수 (0) | 2020.08.21 |
TIL no.5 - Javascript 기초 공부 정리[2] (0) | 2020.08.20 |
TIL no.4 - Javascript 기초 공부 정리[1] (0) | 2020.08.19 |