Bloggerテンプレート自作 #24:ページトップボタンを作る
前回の「最新記事ガジェットを作る」に引き続き、今回は「ページトップアイコンを作る」を実践してみようと思う。
ページトップボタン(ページトップアイコン)とは、ページ内に追従する形で配置されたアイコンをクリックすることでページトップまで戻れるようにするアイコンのことで、ブログサイトには基本的に設置されている。というわけで、今回はこの「ページトップボタン」の作り方をまとめることにする。
作業工程
HTMLを作る
<!-- ページトップボタン -->
<div class="page-top-button">
<a href="#"><i class="fa fa-angle-double-up" /></a>
</div>
</body>
<div class="page-top-button">
<a href="#"><i class="fa fa-angle-double-up" /></a>
</div>
</body>
とりあえずHTMLはこれだけ。これを</body>の真上に書けばOK。
CSSを作る
/* ------------------------------------------------------------------------------------------------------
ページトップボタン
------------------------------------------------------------------------------------------------------ */
.page-top-button {
display: block;
position: fixed;
bottom: 45px;
right: 4%;
z-index: 99;
}
.page-top-button a {
font-size: 25px;
font-weight: 900;
color: #fff;
background: #333;
padding: 5px 15px;
opacity: 0.8;
}
.page-top-button a:hover {
color: #eee;
background: #666;
}
/* レスポンシブ設定 */
@media screen and (max-width: 560px) {
.page-top-button {
top: 85%;
right: -8px;
}
.page-top-button a {
font-size: 20px;
padding: 6px 12px;
border-radius: 50% 0 0 50%;
color: #333;
background: #ccc;
opacity: 0.5;
z-index: 99;
}
}
ページトップボタン
------------------------------------------------------------------------------------------------------ */
.page-top-button {
display: block;
position: fixed;
bottom: 45px;
right: 4%;
z-index: 99;
}
.page-top-button a {
font-size: 25px;
font-weight: 900;
color: #fff;
background: #333;
padding: 5px 15px;
opacity: 0.8;
}
.page-top-button a:hover {
color: #eee;
background: #666;
}
/* レスポンシブ設定 */
@media screen and (max-width: 560px) {
.page-top-button {
top: 85%;
right: -8px;
}
.page-top-button a {
font-size: 20px;
padding: 6px 12px;
border-radius: 50% 0 0 50%;
color: #333;
background: #ccc;
opacity: 0.5;
z-index: 99;
}
}
こんな感じのCSSを書くと、画像のようなデザインになる。
今回はレスポンシブで切り替わるようにしたが、レスポンシブがなくてもスマホ表示はされる。
jQueryを追加する
<!-- jQuery CDN -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js" />
<script>
//<![CDATA[
// ページトップアイコンを隠す
$('.page-top-button').hide();
// ページトップボタン
$(window).scroll(function() {
var now = $(window).scrollTop();
// トップから200px以下になるとページトップアイコンを表示
if (now > 200) {
$('.page-top-button').fadeIn('slow');
}
// 上記以外の場合は消す
else {
$('.page-top-button').fadeOut('slow');
}
});
// ページ内のスムーススクロール設定
$('a[href^="#"]').click(function() {
// スクロールの速度
var speed = 200; // ミリ秒
// アンカーの値取得
var href= $(this).attr("href");
// 移動先を取得
var target = $(href == "#" || href == "" ? 'html' : href);
// 移動先を数値で取得
var position = target.offset().top;
// スムーススクロール
$('body,html').animate({scrollTop:position}, speed, 'swing');
return false;
});
//]]>
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js" />
<script>
//<![CDATA[
// ページトップアイコンを隠す
$('.page-top-button').hide();
// ページトップボタン
$(window).scroll(function() {
var now = $(window).scrollTop();
// トップから200px以下になるとページトップアイコンを表示
if (now > 200) {
$('.page-top-button').fadeIn('slow');
}
// 上記以外の場合は消す
else {
$('.page-top-button').fadeOut('slow');
}
});
// ページ内のスムーススクロール設定
$('a[href^="#"]').click(function() {
// スクロールの速度
var speed = 200; // ミリ秒
// アンカーの値取得
var href= $(this).attr("href");
// 移動先を取得
var target = $(href == "#" || href == "" ? 'html' : href);
// 移動先を数値で取得
var position = target.offset().top;
// スムーススクロール
$('body,html').animate({scrollTop:position}, speed, 'swing');
return false;
});
//]]>
</script>
今回はjQueryを使ってページトップアイコンの動きを設定する。
とりあえず、上からページトップでアイコンを消す、スクロール量が一定値に達するとアイコンが表示される、ページトップに戻る際にスムーズにスクロールさせる、という処理で、細かい説明はコメントを見てもらえば分かると思う。
スムーススクロールは上に戻る際に、下から上に動くように戻るという処理になるが、何の動きもなくページトップに戻るようにしたい場合は、この「ページ内のスムーススクロール設定」内の処理を削除してしまえばいい。
スポンサーリンク
スポンサーリンク
コメント
1 件のコメント :
初めまして。
急な質問で失礼します。ブログ初心者ですが下記に件、質問があります。
bloggerのcontempo lightのテンプレートでページに戻る機能をPCでもスマホでも表示させるようにしたいと思い本サイトを拝見させて頂いていますが、このページにある「HTMLを作る」のHTMLコードをBODYの真上に書き保存仕様としたところエラーが表示され保存できません.(エラー表示:「The widget settings in widget with id AdSense1 is not valid. An internal error occurred. Please try again.」)
お手数ですが原因や対処方法などあればご教示ください。
コメントを投稿