画面を下にスクロールしていった時に右下に出てくる Topへ戻る、ボタンを設置したいな、と思ったので、 jQueryのプラグインを使を使って設置してみました。
scrolltopcontrol
jQuery Scroll to Top Control v1.1 は、Topへ戻るボタンのjQueryプラグインです。
Octopressへのインストール方法は
まず上のページからscrolltopcontrol.js
をダウンロードして
source/javascripts/
へ入れます。
次にscrolltopcontrol.js
の中身を書きなおしてボタンの画像部分を変更します。
1 2 |
|
今回は画像の代わりにFont-Awesomeの
fa-chevron-up
を使いました。
さらにsource/_includes/custom/head.html
へ
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js" type="text/javascript"></script>
<script src="{{root_url}}/javascripts/scrolltopcontrol.js" type="text/javascript"></script>
の2行を加えます。(jqueryの行は、既にfootnote等のインストール時に導入済みの場合は 必要ありません。)
最後に以下の設定をsass/custom/_style.scss
へ加えます。
.icon-scroll-up {
font-size: 3em;
color: #999999;
border: solid 2px #999999;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}
#topcontrol {
z-index: 100;
}
icon-scroll-up
は上のscrolltopcontrol.js
内でcontrolHTMLに使った
アイコン用の設定なので特に必要ありませんが、
必要であれば適時用意して下さい。
このcontrolHTMLの部分が最終的に<div id="topcontrol">~</div>
に囲まれるので、これをページ上で一番上に持ってくるために最後の3行を加えてあります。
Octopressの中で、footer
がz-index: 1;
に指定されているので、
これがないと、下の方に行った時にCopyright
の横でボタンが隠れてしまうので必要です。
以上で、右下にあるようなボタンを作ることが出来ました。 (現在は右上)
その他のオプション
scrolltopcontrol.js
の中のvar scrolltotop
内を変更することで
動作を変更することが出来ます。
- setting:
- startline: ボタンをいつ出すかを整数で指定(デフォルト100)。トップから指定ピクセルだけ下がった時にボタンが出る(0にすれば常に表示)。
- scrollto: 戻る位置の指定。デフォルト(0)だとトップへ。
<div id="scrollto-point"></div>
等と書いておいてscrollto: "scrollto-point"
と指定すればここまで戻る様になる。 - scrollduration: 戻る速度(デフォルト1000(ms))。
- fadeduration: ボタンのフェードイン/アウトの時間指定。デフォルト
[500,100]
(ms)。
- controlHTML: ボタンの画像指定。
- controlattrs: ボタンの位置のオフセット(右下からの距離)。デフォルト{offsetx:5, offsety:5}(ピクセル) 1 2
- anchorkeyword: 戻る位置のアンカー名(デフォルト#top)。この名前がtopの位置として
埋め込まれるので、
<a href="#top">上に戻る</a>
等と書いてもボタンと同じ位置に 戻れる様になる。
ボタンの位置を右下でなくて左下にしたい場合は
.css({position:mainobj.cssfixedsupport? 'fixed' : 'absolute', bottom:mainobj.controlattrs.offsety, right:mainobj.controlattrs.offsetx, opacity:0, cursor:'pointer'})
となっている部分でright
をleft
に変えてあげればoffsetxが左下からの 距離になります。上にしたい場合は
bottom
をtop
へ ↩中央にしたい場合は
right:mainobj.controlattrs.offsetx
の部分をright:'50%'
かleft:'50%'
にすればそれっぽく出来ますが、 これらの場合は右端、または左端が中央に来るので、特に横長のボタンを 使うと綺麗に出来ないかもしれません。 その場合にはもうちょっと頑張って書き直すか他の物を使った 方が早いかもしれません。 ↩