반응형
회사에서 뷰로 작업중인데 맨위로 버튼 좀 만들어 달라고 하셔서 이것 저것 방법을 찾다가 구현완료 !
포스팅으로 정보 공유하면 좋을 것 같아서 이렇게 기록하게 되었다.
생각보다 방법은 간단하다 !
[components] 폴더에 topButtonComponet.Vue를 하나 생성해준다. (파일명은 자유 ~.~)
1. 버튼은 a태그로 만들어도 되고, 취향껏 만들고 CSS로 디자인도 만들어준다.
<template>
<a class="gotop_button" v-show="goTopBtnShow" @click="goTop()">
<span>Top</span>
</a>
</template>
2. 나는 v-show를 사용하여 스크롤 위치에 따라 나타나거나 숨겨지도록 함수를 구현했다.
v-show는 true 일 때 display:block; false일 때 display:none; 시켜버린다.
<script>
export default {
data(){
return{
goTopBtnShow: this.goTopBtnShow
}
},
methods: {
handleScroll(){
this.goTopBtnShow = window.scrollY > 400;
},
goTop() {
window.scrollTo({top: 0, behavior: 'smooth'});
}
},
mounted() {
window.addEventListener("scroll", this.handleScroll);
}
}
</script>
스크롤 위치가 400 보다 커지면 그때 true를 반환, 400보다 작아지면 false를 반환한다.
window.scrollTo에 behavior: 'smooth' 를 적용시키면 버튼 클릭 시 스크롤이 서서히 올라가는 효과를 줄 수 있다.
behavior를 줬는데 효과가 먹지 않는다면 a태그에 href 속성이 있는 지 확인, 있다면 과감히 빼준다.
3. 맨 위로 버튼이 나타나거나 숨겨질 때 서서히 효과를 주고 싶다면 Vue Transition을 이용하자.
<template>
<Transition>
<a class="gotop_button" v-show="goTopBtnShow" @click="goTop()">
<span>Top</span>
</a>
</Transition>
</template>
template 아래 적용시킬 버튼 바로 상위에 <Transition>태그를 감싸 준 후, 공식 문서에서 처럼 CSS도 추가해주면된다.
아래 공식문서 참고 !
반응형
'study > vue.js' 카테고리의 다른 글
[Vue.js] 알아보기(4) : Vue 탬플릿문법과 Watch, 최신 Vue CLI (0) | 2020.09.25 |
---|---|
[Vue.js] 알아보기(3) : Vue Router 와 Axios (0) | 2020.09.07 |
[Vue.js] 알아보기(2) : Vue Component (0) | 2020.09.07 |
[Vue.js] 알아보기(1) : Vue.js 란 (0) | 2020.09.04 |
[Vue.js] 시작하기 : 기본 개발환경 설정하기 (6) | 2020.09.01 |