STUDY/vuejs
[vue: worklist 제작] 3. 탭으로 1depth 인덱싱
수밤바
2022. 10. 5. 15:09
728x90
App.vue 에서 다음과 같이 데이터를 받아왔다
<template>
<div>
<header>
<Tab :tabLists="groupTitles"/>
</header>
<article class="content">
<Group v-for="(group, idx) in groups"
:iaList="group"
:idx="idx" />
</article>
</div>
</template>
Tab.vue
<template>
<div class="tab">
<button type="button"
class="tab__item"
v-for="(item,idx) in tabLists"
:key="item"
@click="quickMove(`groupTitle__${idx}`)"
>{{item}}</button>
</div>
</template>
<script>
export default {
name: 'tab',
props:{
tabLists : Array
},
methods:{
quickMove : function(item){
const pos = document.getElementById(item).offsetTop;
const headerHeight = document.getElementsByTagName('header')[0].offsetHeight;
window.scrollTo(0,pos-headerHeight)
}
}
}
</script>
groupTitle을 tabLists로 받아와서
각 타이틀들을 button으로 감싸주고 click시 해당 그룹으로 이동할 method를 만든다 (quickMove)
quickMove(item)
매개변수로 받아온 groupTitle__1... 은
<Group> 컴포넌트안의 각 타이틀에 id값으로 같은 id사용하기로 한다
getElementById(item) 으로 group안의 타이틀 id를 찾고 위치를 찾는다(offsetTop)
나는 tab이 페이지에서 항상 띄어둘것이기 때문에
그만큼의 높이값을 빼주어(headerHeight) 스크롤이 tab바로 아래에 보여지게한다
window 스크롤값을 이동시킨다
728x90