jQueryやスマートフォンが流行るようになってきてからスクロールしたあとに「上へ戻る」ボタンが作られるようになってきました。今回はそれを作っていきたいと思います。7月19日記事
イメージ
全体はこんな感じ
最初はボタンがあらわれないが
下の方にいくとあらわれる
目次
HTML部
<!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="reset.css"> <link rel="stylesheet" type="text/css" href="style.css"> </head> <title>トップに戻るボタン作り</title> </head> <body> <div id="header_contents"> <p>header</p> </div> <div id="menulist"> <p> <a href="#A">Aへ移動</a> <a href="#B">Bへ移動</a> <a href="#C">Cへ移動</a> <a href="#D">Dへ移動</a> <a href="#E">Eへ移動</a> <a href="#F">Fへ移動</a> </p> </div> <div class="contents A"><!--.contentsと.A二つクラスを読み込む--> <p id="A">A</p> </div> <div class="contents B"> <p id="B">B</p> </div> <div class="contents C"> <p id="C">C</p> </div> <div class="contents D"> <p id="D">D</p> </div> <div class="contents E"> <p id="E">E</p> </div> <div class="contents F"> <p id="F">F</p> </div> </body> </html>
CSS部
@charset "utf-8"; /* CSS Document */ #header_contents{ background: #FCC; margin : 0 auto; width: 1000px; height: 300px; border: 1px solid #000; } #menulist{ background: #CFC; margin : 0 auto; width: 1000px; height: 100px; border: 1px solid #000; } .contents{ margin : 0 auto; width: 950px; height: 500px; background: #EEE; } p{ font-size: 50px; } .A{ border-left: 50px solid #FF0; } .B{ border-left: 50px solid #F0F; } .C{ border-left: 50px solid #0FF; } .D{ border-left: 50px solid #F00; } .E{ border-left: 50px solid #0F0; } .F{ border-left: 50px solid #00F; }
以下のようになると思います。
photoshopで作ったりaタグをブロックにしたりし作ってください。
今回画像で作りました。
50pxバージョン
100pxバージョン
どこでもいいので、以下のようなHTMLとCSSを書きます。
HTML部
<div id="pagetop"> <a id="move-pagetop"><img src="button100.png" alt="トップへ"></a><!--hrefは作らずidだけ指定する--> </div>
CSS部
/*ページトップへ*/ #pagetop{ position:fixed; right:20px; bottom:20px; display: none; } #move-pagetop{ display:block; }
jQuery部<head>タグ内に書いてください。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script> $(function(){ //ウインドウのスクロール時 $(window).scroll(function(){ //現在の高さ取得 var nowheight = $(window).scrollTop(); if(nowheight > 700){ $('#pagetop').fadeIn('slow'); }else{ $('#pagetop').fadeOut('slow'); } }); //押された時 $('#move-pagetop').click(function(){ $('html,body').animate({scrollTop:0},'slow'); }); }); </script>
ボタンCSSの方は
position:fixedと、display:none
が重要で、常に固定化されたボタンと、fadeInを表示させるために必要なdisplay:none(何にもないところからフェードインさせる)を記述することが重要です。
また、jQueryは
ウインドウのスクロール時のボタンの表示の挙動と押された時の表示の挙動
を二つにわけてプログラムを書きます。
さらに、jQueryはウインドウのスクロール時のボタンの表示の挙動は
現在の高さに応じて、表示させるか否か
をやれば、完成します。
以上