"맨 위로" 버튼 구현하기
SPA 웹페이지나 댓글이 200개 300개 달린 페이지에서 사용자가 직접 맨 위로 되돌아가기 위해 스크롤을 직접 이동하는 것은 고역이다.
특히 모바일로 접속한 사용자라면 더더욱 그렇다.
모바일 삼성인터넷 앱은 맨 위로 가는 기능이 내장되어 있지만 모바일 크롬 등은 아직 그런 기능이 없기 때문이다.
그래서 요즘엔 어딜 들어가든 대부분 맨 위로 가는 버튼이 존재하는데, 가끔 이게 없는 사이트를 들어가면 성질이 뻗칠 때가 있다. (대부분 블로그들)
현재 내 블로그에도 적용되어 있다. (우측 하단)
1. <a>태그와 #
1 | <a href="#">맨 위로</a> | cs |
그러나 위 방식을 사용하고 링크를 클릭하면 url에 #이 붙는다.
크게 상관없지만 별로 보기 좋은 방식은 아니다.
또한 위 방법은 개발 시 아직 아무것도 연결하지 않은 앵커를 만들 때 자주 사용되는 방법이다. 용도에 있어서도 일관성이 떨어진다.
2. <a> 태그와 id
id를 타겟으로 해 1번과 같은 방식으로 구현해볼 수 있다.
1 | <a href="#header">맨 위로</a> | cs |
페이지 맨 위에 있는 #header 를 가진 엘리먼트 타겟으로 이동하여 맨 처음으로 이동하는 효과를 부여하는 것이다. 장단은 1번과 비슷할 것 같다. 다만 '맨 위로' 기능이 아니라 페이지의 특정 부분으로 가는 쪽에서는 많이 쓰는 방법이다. (목차 기능 등)
3. Javascript
See the Pen back-to-top button by kutar37 (@kutar37) on CodePen.
가끔 둘러보면 아래 코드에서 'body'를 뺀 'html' 로만 선택자를 넣어놓은 것을 보는데, PC에선 상관없지만 모바일 환경에서 제대로 동작하지 않는 경우가 있어 html,body를 둘 다 선택하는 것이 좋다.
1 | $('html,body').animate({scrollTop:0},600); | cs |