Twenty Thirteen ナビゲーションメニューを固定

ナビゲーションメニューを固定にしてみました。下方にスクロールしても最上部に固定されるやつです。

スクリプト

以下のjsファイルを用意して下さい。
nav要素のidは、ソースもしくはheader.phpの<nav id="~">をみて確認して下さい。

// navbarfixedtop.js
<script type="text/javascript">
$(function () {
    var nav = $('#navbar');        // nav要素のidを設定
    var objDistance = nav.offset().top;
    $(window).scroll(function() {
        var myDistance = $(window).scrollTop();
        if (myDistance > objDistance){
            nav.addClass('navbar-fixed-top');
        }
        if (objDistance > myDistance){
            nav.removeClass('navbar-fixed-top');
        }
    });
});
</script>

header.phpのhead内もしくはfooter.php(wp_footer()の前あたり)にそのまま追加するか、もしくはフックして読み込ませて下さい。

フックする場合

/子テーマディレクトリ/js/navbarfixedtop.jsと配置した例です。
(参考:独自のCSSやJSを読み込む)

// functions.php
add_action( 'wp_enqueue_scripts', 'navbarfixedtop');
function navbarfixedtop() {
    wp_enqueue_script( 'navbarfixedtop', get_bloginfo('stylesheet_directory') . '/js/navbarfixedtop.js', array(), null, true);
}

スタイル

画面の最上部にAdmin bar(管理バー)を表示している場合は、admin-barもしくはlogged-inを利用してずらして下さい。

<style>
.navbar-fixed-top {
    top: 0;
    position: fixed;
    z-index: 1030;
}

body.admin-bar .navbar-fixed-top {
    top: 28px;
}
</style>

ちなみに、スクリプト内のnav要素のidさえ適切に設定すれば、テーマに関係なく使用できます。

  • このエントリーをはてなブックマークに追加

関連記事

Twenty Twelve サイトタイトルをテキストから画像に置き換え

ページトップに表示されるサイトタイトルをデフォルトのテキストから画像に変更します。 あらかじめ、管理画面のメディアライブラリから画像をアップロードしているもしくは別の場所に保存しているそのファイルの

多言語化プラグイン「qTranslate」

ブログを多言語化しようと思い、プラグイン「qTranslate」を導入してみました。 General Settingsで使用する言語を選択する ★使用する言語を選択 管理画面「設定」⇒「Lang

ポップアップが実装できるプラグイン「Anything popup」「Easy Modal」

ポップアップ 「Anything Popup」 「Anything popup」は、ページにポップアップが実装できるWordPressプラグインです。ポップアップ要素を投稿ページと同様に作成できるた

no image

「編集(Edit)」リンクの非表示方法

ログインした状態で投稿ページを開くと投稿内や各コメントに各編集ページへリンクしてくれる「編集」リンクが表示されます。(繰り返し言いますが、自サイトにログインしているユーザにしか見えません。) こ

titleタグ(wp_title) カスタマイズ

SEO対策を行う際に、titleタグは重要な要素だと言われています。 「サイトのタイトル」、「キャッチフレーズ」(site_description)、「カテゴリー名」など色々と組み合わせてみることが

no image

投稿タイトル(entry-title)を非表示にする

表題通り「投稿タイトルを表示しない」ことは、"投稿ページ"ではあまりないと思いますが、"固定ページ"では意外とあったりします。 編集画面でTitleを入力しないでおけば、それで済むのですが、ペー

Google Code Prettifyを使用してソースコードを表示をしてくれる「Prettify Code Syntax」

Prettify Code Syntaxは、WordPressでGoogle Code Prettifyを使用してソースコードを表示してくれるプラグインです。 プラグインダウンロード Google

"コメントを残す" 削除・文言を変更する方法

コメントフォームに表示される「コメントを残す」はWordPress標準で翻訳される要素です。テーマ側でカスタマイズしていない限り表示されます。 ここでは、この要素を削除したり、文言を変更する方法を紹

「タグクラウド」ウィジェット カスタマイズ

タグクラウドは、管理画面ではあまりカスタマイズできません。必要であれば、フィルターフックやプラグインを用いて表示設定や概観の変更を行うことができます。 目次 出力をカスタマイズ 各タグの

Twenty Twelve "Proudly powered by WordPress"をCopyrightに変更

標準でページの最下部に表示される"Proudly ~"を変更します。 子テーマフォルダにfooter.phpをコピーし、以下のように編集を行ってください。リンクを外して、表示部分を書き換えるだけです

Comment

  1. 投稿者様
    こちらの記事についてもう少し詳しく教えていただきたいです。

    当方twenty thirteen 1.2のテーマにて記事のようにナビメニューを固定したいと考え、記事を参考に当サイトに反映させてみましたが、実装できておりません。(記事内容を反映させても変わらない)

    1.header.phpの内にjavascriptのロジックを追加
    2.nav要素のidを変更
    3..navbar-fixed-topの追加

    以上の設定を行ないましたが、他になにか考えられる点などあるのでしょうか。
    思い当たる点がありましたら、ご教授お願いしたいと思います。

    • コメントありがとうございます。
      以下のコードで試してみ下さい。WordPressバンドルのjQuery用を使用する場合は、1行目と最終行が以下のようになります。(抜けていました、スイマセン)

      <script type="text/javascript">
      (function($) {
          var nav = $('#navbar');        // nav要素のidを設定
          var objDistance = nav.offset().top;
          $(window).scroll(function() {
              var myDistance = $(window).scrollTop();
              if (myDistance > objDistance){
                  nav.addClass('navbar-fixed-top');
              }
              if (objDistance > myDistance){
                  nav.removeClass('navbar-fixed-top');
              }
          });
      })(jQuery);
      </script>
      

      以下のようにGoogleなど外部のjQueryライブラリを使用する場合は、投稿内のコードを採用して下さい。jQueryをCDNから読み込む

      "2.nav要素のidを変更"については、Twenty Thirteenの場合は変更なしで上記コードのままでも問題ないかと思います。

    • kwski様
      返信ありがとうございます。nav id要素はそのままで早速試してみましたが、現象は変わらずです。。。。当方サイトは外部のライブラリを使用せずの対応で行なっているため、特にjQueryの外部サイトは記述しておりません。
      当方でもいろいろと試しながらやってみます。
      投稿者様においても何か他に思い当たる点がありましたら、ご連絡いただければ幸いです。

    • kwski様

      IEでデバックしスクリプトエラーを確認しましたので、続報としてご連絡します。
      スクリプト内の
      「var objDistance = nav.offset().top;」にて
      エラー
      「未定義または null 参照のプロパティ 'top' は取得できません」が
      表示されてしまい、正常に動作できないようです。

      当方にても追って確認していきます。

    • kwski 様
      当方のサイトでの対応ですが、無事に正常に動作できました。
      原因の詳細は不明ですが、コード内にjQueryを参照するよう記述したら正常に動作しました。(単純な原因でした)
      wordpressのデフォルトではjQueryは参照してないようですね。
      この度は親身になって対応していただき、感謝しております。
      ありがとうございました。

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

    PAGE TOP ↑