Home
Menu
Side
Twitter
Top

【 QooQ カスタマイズ 】 ナビゲーションバーをカスタマイズする

2020/05/14

QooQ ブログ ブログカスタマイズ

こんにちは! HARU( @HARU )です。

Blogger のテンプレートである QooQ のナビゲーションバーについてカスタマイズしてみました。

変更点
  • ナビゲーションバーの位置変更
  • ナビゲーションバーの位置固定
  • 検索ボックスをナビゲーションバーに入れる
  • スマホ表示用のナビゲーションバーカスタマイズ

今回のカスタマイズをするにあたっては特に、ふじやん。さんのサイト( ふじろっく ) で紹介されているカスタマイズ方法を参考にさせて頂きました!

その理想的なナビゲーションに加え、スマホ表示時のナビゲーションバーをクリックしやすくカスタマイズしてみました。

よかったら参考にしてみてください。

注意

テンプレートの編集( ソースコード改変 )するときは、必ずバックアップを取ってから編集しましょう。

不安な方は以下の関連記事を参照してください。

ナビゲーションバーの位置変更

デフォルト状態だと画面上、一番上に設置されるナビゲーションバーをブログタイトルの下に設置します。

デフォルト カスタム

QooQ ナビゲーションバーの位置デフォルトイメージ

QooQ ナビゲーションバーの位置変更イメージ

(1)以下のコードを検索します

<div id='navigation'>

(2)<div id='navigation'> から対応の </div> までを切り取ります

QooQ のデフォルトであれば、</div> は <div id='header'> の直上にあります。


    <!-- 切り取り範囲 ココから -->
    <div id='navigation'>
    <!-- (省略) -->
    </div>
    <!-- 切り取り範囲 ココまで -->
    <div id='header'>
  

(3)先ほど切り取ったコードを <div id='header'> に対応した </div> の直下に貼り付けます


    <div id='header'>
    <!-- (省略) -->
    </div>
    <!-- 以下に先ほど切り取ったコードを貼り付ける -->
    <!-- 切り取り範囲 ココから -->
    <div id='navigation'>
    <!-- (省略) -->
    </div>
    <!-- 切り取り範囲 ココまで -->
  

ナビゲーションバーの位置固定

ページがスクロールされても、ナビゲーションバーが上部で固定するようにします。

QooQ ナビゲーションバー位置固定イメージ

CSS 変更

既存の CSS ( #navigation ) の変更を行います。


  #navigation{
    padding: .2em 0 .2em 0;
    background: $(brand.subcolor);
    color: $(brand.subfont);
    position: sticky; /* 追記 */
    top: 0; /* 追記 */
    z-index: 999; /* 追記 */
  }

ナビゲーションバーの位置固定に伴うページ内リンクの調整

ナビゲーションバーの位置を固定することにより、ページ内リンク移動先で文字がナビゲーションバーに重なってしまうことが起こります。

そこでナビゲーションバーの分だけ、ページ内リンクの移動先をオフセットします。

ここでは2通りの調整方法を紹介しますが、オススメはページ内リンクをぬるっとスクロールさせる script の実装ついでに調整する方法です。

CSS を用いた調整方法

以下の CSS を追記し、リンク移動先のクラスに指定することで、移動先のオフセットが可能になります。


  #single-content .anchor{
    padding-top: 40px; /* オフセット量 */
  }

使い方


  <!-- ページ内リンク移動先の直上に以下を記載する -->
  <div id="example" class="anchor"></div>
  <!-- ページ内移動先指定場所 -->

id は任意のものを使って問題ありません。

ページ内リンクをぬるっと Script

ページ内リンクにスクロールアニメーションを追加するついでに、ナビゲーションバーの分だけオフセットさせることができます。

この方法を用いることで、リンク移動先にいちいち div タグを用いてオフセットさせる必要がなくなります。

詳しくは以下を確認してください。

検索ボックスをナビゲーションバーに入れる

検索ボックスをナビゲーションバー内に設置します。

QooQ ナビゲーションバーに検索ボックスを入れたイメージ

検索ボックスの埋め込み

以下の手順で検索ボックスをナビゲーションバーに埋め込みます。

(1)以下のコードを検索します

<div id='navigation'>

(2)以下のコードを <div id='navigation'> の下の <div class='widget-content'> の直下に記述します


  <!--検索ボックス-->
    <form action='/search' id='search-box-form' method='get'>
      <input data-placeholder-end='' expr:value='data:view.isSearch ? data:view.search.query.escaped : &quot;&quot;' id='search-box-text' name='q' placeholder='ブログ内検索' type='text'/>
      <button id='search-box-submit' title='検索' type='submit'><i class='fas fa-search'/></button>
    </form>

イメージとしては <div class='widget-content'> と <ul> の間になります。

以下、記述場所のイメージです。


  <div id='navigation'>
  <!-- 省略 -->
    <div class='widget-content'>
    <!-- ココに先ほどのコードを記述する -->
      <ul>

Font Awesome の導入

Font Awesome を導入していない場合、以下のコードを <head> の直下に記述します。

<link href='https://use.fontawesome.com/releases/v5.6.4/css/all.css' rel='stylesheet'/>

CSS 追記

以下の CSS を Blogger テンプレートの CSS 欄に記述します。

#navigation の近くに記述すると、メンテナンス性もいいと思います。


  #search-box-form {
    float: right;
    width: 200px;
    background: #fff;
  }
  #search-box-form::placeholder {
    color: #aaa;
  }
  #search-box-text {
    width: 87%;
    border: none;
    outline: none;
    font-size: 1em;
    padding-left: 3px;
  }
  #search-box-submit {
    color: #888;
    font-size: 1em;
    background: transparent;
    position: absolute;
    right: 0;
    top: 3px;
    border: none;
    outline: 0;
  }
  #search-box-submit:hover {
    cursor: pointer;
  }

スマホ表示用のナビゲーションバーカスタマイズ

ナビゲーションアイコンの変更

スマホ表示時のナビゲーションアイコンを Font Awesome を使い見やすくします。

QooQ ナビゲーションアイコン変更イメージ

(1)以下のコードを検索します

<label for='navigation-button' id='navigation-label'>=</label>

(2)先ほどのコードを以下のように変更します

<label for='navigation-button' id='navigation-label'><i class="fas fa-bars"></i></label>

アイコンの調整

QooQ デフォルトであれば CSS ナビゲーション内の @media ( max-width : 768px )内 #navigation-label で大きさなどを変えられます。

以下に参考の CSS を示します。


  @media ( max-width : 768px ) {
  #navigation-label {
    display: block;
    text-align: center;
    font-size: 22px; /* アイコンの大きさ */
    padding: 2px 0 2px 20px; /* 余白などを調整 */
  }

アイコン位置変更

ナビゲーションアイコンの位置を真ん中から右端に変更することで、アイコンの縦幅分を削減できます。

ナビゲーションを開閉するボタンの範囲は減りますが、スッキリした見た目になります。また、誤クリック防止にも繋がるでしょう。

デフォルト カスタム

QooQ ナビゲーションアイコン位置デフォルトイメージ

QooQ ナビゲーションアイコン位置変更イメージ

以下、アイコン調整の CSS を含みます。


  @media ( max-width : 768px ) {
  #navigation-label {
    display: block;
    text-align: center;
    font-size: 22px; /* アイコンの大きさ */
    padding: 2px 0 2px 20px; /* 余白などを調整 */
    float: right; /* 右に寄せる */
  }

ナビゲーションリストを縦に並べる

QooQ デフォルトだと、文字の数によってボタンサイズを自動調整してくれます。

しかし当たり前ですが、一つ一つのボタンのサイズ感に違いがでます。

そこで表示するリスト内容が大きくても、小さくても縦並びになるように変更しました。

QooQ ナビゲーション内リスト縦並びイメージ

CSS 追記

以下の CSS をBlogger テンプレートの CSS 欄に記述します。

中身だけをナビゲーションの @media ( max-width : 768px )内に追記しても大丈夫です。


  @media ( max-width : 768px ) {
    #navigation-content li {
      width: 100%;
    }
    #navigation-content li a {
      padding: .5em .5em;
      font-size: 14px;
    }
  }

ナビゲーションバーの微調整

検索ボックスをナビゲーションバー内右端に設置することにより、画面サイズによっては右側に余分な余白ができてしまうことがあります。

そこも調整して見やすいナビゲーションバーにします。

※ナビゲーションアイコンを右に寄せない場合、この調整は必要ありません。

CSS 削除

ナビゲーションの @media ( max-width : 768px )内の2つの CSS を削除します。

削除する CSS は以下の通りです。


  #navigation-content{
    display:none;
  }

  #navigation-button:checked ~ #navigation-content{
    display: flex;
  }

CSS 追記

以下の CSS をBlogger テンプレートの CSS 欄に記述します。

中身だけをナビゲーションの @media ( max-width : 768px )内に追記しても大丈夫です。


  @media ( max-width : 768px ) {
    #navigation-content{
      height:0;
      overflow: hidden;
      opacity: 0;
      transition: all 0.5s ease 0s;
    }
    #navigation-button:checked ~ #navigation-content{
      opacity: 1;
      height: auto;
    }
  }

スマホ版の CSS が反映されない

CSS は HTML 文上、下に書かれるほど優先度が上がる特性を持っています。

今回の場合、基本となるデザインの CSS より上に @media によるスマホ用 CSS が記載されているとその CSS は反映されません。

したがって以下のような順番に CSS を記載するようにしてください。


  /** ナビゲーション **/
  ① 基本となるデザイン CSS
  ② スマホ用 CSS ( @media )

スマホ用 CSS ( @media )について

説明では QooQ のデフォルトである 768px 以下でスマホ用の CSS が反映されるようになっています。

この値を変更することにより、任意の画面サイズでのデザイン調整をすることができます。

QooQ