ページのトップへ戻るボタンを設置するとき、プラグインを使うか自作するか。。。いつも迷ってしまう。プラグインは便利で簡単だけど、使わない機能もたくさんついてくるし、余分なデータは極力省きたい。だから、今回は自作してみよう!と思って調べました。たくさん見つかったサンプルコードをコピペして試しながら実際に設置してみました。
このページのもくじ
step1 footer.phpにコードを設置
footer.phpの「/body」ボディの閉じタグより前に下のコードを設置します。
「▲」の部分は、自由に編集。記号じゃなくて、「TOPへ」などのテキスト形式でもOK。
<a href="#top" class="page_top">▲</a>
step2 JSファイルをつくる
あらかじめ、ベースのjQueryは読み込んであるとします。
<script async src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
続いて、コードを記述した JSファイルを作成します。
下のコードを totop.js という名前で保存。
$(function() { var pageTop = $('.page_top'); pageTop.hide(); $(window).scroll(function () { if ($(this).scrollTop() > 600) { pageTop.fadeIn(); } else { pageTop.fadeOut(); } }); pageTop.click(function () { $('body, html').animate({scrollTop:0}, 500, 'swing'); return false; }); });
functions.phpから、先ほど作ったjsファイルを読み込ませます。
//JavaScriptの読み込み function add_my_js_script() { wp_enqueue_script( 'totop', get_template_directory_uri() .'/js/totop.js', array(), '', true); } add_action('wp_enqueue_scripts', 'add_my_js_script');
step3 CSSで装飾する
footer.phpに設置したコードにあるクラス「.page_top」に CSS を設定していきます。ココでボタンの見え方を自由に定義します。
/* cssのサンプル */ .page_top { position:fixed; bottom:10px; right:10px; width: 50px; height: 50px; -webkit-border-radius: 50%; -moz-border-radius: 50%; border-radius: 50%; color:#fff; font-size:20px; text-decoration:none; background:#2EA2CC; border: 3px solid #ffffff; text-align: center; line-height: 50px; }
これで完了!スクロールすると、ふわっとボタンが現れて、クリックするとページのトップへ移動します。
別のスクリプト
HTML:footer.phpの</body>手前あたりに貼り付け
<div id="page-top"> <a id="move-page-top">▲</a> </div>
CSS
/*------------------------ TOPへ戻るボタン ---------------------------*/ #page-top{ position:fixed; right:16px; bottom:16px; display: none; z-index:9999; } #page-top a{ color:#fff; padding:10px; text-decoration:none; display:block; cursor:pointer; text-align:center; background:#aaa; line-height:100%; border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; } #page-top a:hover{ background:#8b8b8b; -webkit-transition:all 0.3s; -moz-transition:all 0.3s; transition:all 0.3s; }
javascript
jQuery(function(){ jQuery(window).scroll(function(){ //最上部から現在位置までの距離を取得して、変数[now]に格納 var now = jQuery(window).scrollTop(); //最上部から現在位置までの距離(now)が600以上 if(now > 600){ //[#page-top]をゆっくりフェードインする jQuery('#page-top').fadeIn('slow'); //それ以外だったらフェードアウトする }else{ jQuery('#page-top').fadeOut('slow'); } }); //ボタン(id:move-page-top)のクリックイベント jQuery('#move-page-top').click(function(){ //ページトップへ移動する jQuery('body,html').animate({ scrollTop: 0 }, 800); }); });
WordPressではjQueryを記述するときに$の代わりに上のサンプルコードのような書き方をする必要があります。
まとめ
調べてみると、いろいろな設定の方法がありました。実際に試してみて、コードがわかりやすいこと、CSSが少なめであること、という点で上のスクリプトを採用しました。別案の方は、CSSがちょっと多めだったので今回は使いませんでしたが、試してみたところ、WordPress内でちゃんと動きました。