ページトップへ移動するアニメーション
スクロールすると表示されるトップへ戻るボタン
ページトップへ移動するアニメーション
《script.js》
$(function() { var topBtn = $( '#page-top' ); //ボタンを非表示 topBtn.hide(); //スクロールが100に達したらボタン表示 $( window ).scroll( function () { if ( $(this).scrollTop() > 100 ) { topBtn.fadeIn(); } else { topBtn.fadeOut(); } }); topBtn.on( 'click', function () { $( 'body, html' ).animate( { scrollTop: 0 }, 500); return false; }); });
$('body').animate({ scrollTop: 0 }); // WebKit $('html').animate({ scrollTop: 0 }); // WebKit以外
- 両方指定するとコールバックを指定している場合、コールバックが2回呼ばれてしまう場合があるので、記述をまとめます
$( 'body, html' ).animate({ scrollTop: 0 });
《index.html》
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>スクロールするとページトップへ戻るボタンがフェードして表示</title> <link rel="stylesheet" href="style.css"> <script src="js/jquery-3.0.0.min.js"></script> <script src="js/script.js"></script> </head> <body> <div id="container"> <h1>スクロールするとページトップへ戻るボタンがフェードして表示</h1> <div class="nav"> <ul> <li><a href="#">HOME</a></li> <li><a href="#">ABOUT</a></li> <li><a href="#">NEWS</a></li> <li><a href="#">LINK</a></li> </ul> </div><!-- /.nav --> <div id="content"> <h2>jQueryを使ったページトップへ戻るボタン</h2> <p> これはスクロールするとページトップへ戻るボタンがフェードして表示されるサンプルです。 </p> </div><!-- /#content --> <p id="page-top"><a href="#container">PAGE TOP</a></p> </div><!-- /#container --> </body> </html>
《style.css》
@charset "UTF-8"; html, body, h1, h2, p, ul, li { margin: 0; padding: 0; line-height: 1.0; font-family: "Hiragino Kaku Gothic ProN", Meiryo, sans-serif; } ul { list-style: none; overflow: hidden; } a { text-decoration: none; } body { background: #EEE; color: #333; } h1 { font-size: 1.5em; margin: 50px 0 20px 0; text-align: center; } h2 { margin-bottom: 20px; } #content { width: 680px; height: 2000px; margin: 0 auto 60px; padding: 60px; background: #FFF; } .nav { width: 760px; height: 50px; margin: 0 auto 20px; padding: 0 20px; font-size: 1.0em; border-radius: 5px; background: #333; background: -moz-linear-gradient(top, #666, #333); background: -webkit-gradient(linear, left top, left bottom, from(#666), to(#333)); box-shadow: 0px 3px 5px 0px rgba(0,0,0,0.3); } .nav li { float: left; } .nav li a { display: block; padding: 0 20px; color: #FFF; line-height: 50px; } .nav li a:hover { background: #666; } #page-top { position: fixed; bottom: 20px; right: 20px; font-size: 0.874em; } #page-top a { display: block; width: 100px; padding: 30px 0; background: #666; color: #FFF; text-align: center; border-radius: 6px; } #page-top a:hover { background: #999; }
下から上にアニメーションして表示される
$(function() { var topBtn = $( '#page-top' ); topBtn.css( 'bottom', '-100px' ); var showFlug = false; $(window).scroll( function () { if ( $(this).scrollTop() > 100 ) { if ( showFlug == false ) { showFlug = true; topBtn.stop().animate( {'bottom' : '20px'}, 200 ); } } else { if (showFlug == true) { showFlug = false; topBtn.stop().animate( {'bottom' : '-100px'}, 200 ); } } }); topBtn.on( 'click', function () { $( 'body, html' ).animate( { scrollTop: 0 }, 500); return false; }); });