본문 바로가기

Local Oriented/jQuery

화면이 일정 거리 위 아래로 스크롤 될 때 오른쪽 아래에 '맨위로 가기' 버튼 달기

http://gogoke1.blog.me/20202666575


원리는 이래요.. CSS 스타일 중 position 항목에서 fixed 라는 값이 있는데,

이걸 사용하면 화면이 스크롤 되어도 일정 위치에 표시가 됩니다. 말 그대로 position 을 fixed 하는 거에요..


대체로는 left:10px 와 top:10px 과 같이 왼쪽 위를 기준으로 세팅을 하는데,

오른쪽 위에 하려면 right:10px 과 top:10px 처럼 수치를 조정하면 됩니다.

왼쪽 아래는 left:10px 과 bottom:10px, 오른쪽 아래는 right:10px 과 bottom:10px 이렇게 하면 되겠네요.

이걸 자바스크립트로 화면 사이즈를 재고, 화면 스크롤 할 때마다 어떻게 하고 이렇게 고민할 필요가 없습니다.


그런데, 화면이 위 아래로 스크롤 될 때 스크롤 되는 거리를 고려해서..

처음엔 '맨위로 가기' 버튼이 나오지 않다가, 일정 거리 이상 스크롤이 되면 표시되게 하려면..

역시나 자바스크립트 코드가 필요하겠네요. 여기서는 jquery 를 사용해 볼께요..


샘플은 아래와 같습니다.

혹시 위로 가기 버튼이 여럿 있을까봐.. top 을 class 로 세팅했어요. 1번만 있다면 id 로 하면 되겠죠..

이미지에 a 태그를 달았는데, a 태그가 없으면 cursor:hand 를 설정해도 크롬에서 손 모양이 나오지 않기도 하더군요.

a 태그에 href="#" 를 달았는데, 사실 이건 작동하지 않도록 document ready 에 기능을 추가했어요. # 으로 하면 화면이 번쩍이거든요..

.top 아래에 a 태그가 여럿일수도 있겠지만 여기서는 하나만 있으니까 그냥 '.top a' 를 클릭하는 걸로 합니다.

버튼이 표시되거나 없어질 때 fadeIn() 과 fadeOut() 을 사용해서 부드럽게 처리했어요.

html 이나 body 둘 다 없는 .html 파일은 없겠죠.. 그러나, 간혹 둘 중 하나가 없기도 해서 둘다 세팅해서 animate 를 돌리는 거에요.

animate 에 slow 를 달았지만, 스크롤이 많이되었다면 웹브라우저가 알아서 빨리 스크롤 해 줍니다. 안 그런 브라우저는 바보.


<!doctype html>

<html lang="ko"

<head>

<style>

  .top { position:fixed;left:550px;bottom:15px; z-index:999; display:none; }

</style>

</head>

<body>

<div class="top"><a href="#"><img src="위로 가기 이미지" /></a></div>

<div style="width:10px; height:5000px"></div>

<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.js"></script>

<script>

  $(document).ready(function(){

    $(window).scroll(function(){

      if($(window).scrollTop()>100) $('.top').fadeIn('slow'); // 100 픽셀을 초과하여 스크롤 된 다음 표시

      else $('.top').fadeOut('slow'); // 100 픽셀 이하인 경우 숨김

    });

    $('.top a').click(function () { // 

      $('html, body').animate({ scrollTop:0 }, 'slow');

      return false;

    });

  });

</script>

</body>

</html>



'Local Oriented > jQuery' 카테고리의 다른 글

글자효과 jquery 플러그인  (0) 2014.07.23
점점 투명하게 하기  (0) 2014.07.15
jQuery 로 input[type="file"] 값 리셋하기  (0) 2014.04.23
jquery 플러그인, http://www.sticklr.net/  (0) 2014.04.14
jQuery 구조와 기능  (0) 2014.03.27