from :: Asahikawa Hokkaido

passer-by198

primetime pencil

2011/04/24


Posted

Bloggerでドロップダウン(2階層目)とフライアウト(3階層目)付きの自作画像ナビゲーションを実装する方法

現在…実装しているナビゲーションの解説はこちらです…

 マウスホバーで光源が追従しスクロールでページトップに固定される3階層ナビゲーション




概要&下準備


当サイトのナビゲーションは…

「Top Page」「8つのカテゴリーページ」「それ以外のページ」の…

10種類で構成されている「ul」「li」の入れ子構造になっていて…

ほんの少しだけ「JavaScript」を使います…

クリックされて「Top Page」か「8つのカテゴリーページ」が表示されると…

表示ページのテーマカラーの画像とボーダーラインに切り替わり…

1階層目にマウスを載せるとページのテーマカラー画像に切り替わり…




2階層目が有るカテゴリーでは…

メニューがドロップダウンで表示され…


3階層目が有るメニューはカテゴリーページのテーマカラーでハイライトされます…

2階層目にマウスを載せると画像が透過されて暗くなり Hover 状態を表現します…




ハイライトされた2階層目にマウスを載せると…

3階層目がフライアウトされます…


2階層目のドロップダウンメニューは他のカテゴリーを「Hover」するか…

「Hide Menu」をクリックすると順次消えていきます…

3階層目のフライアウトメニューは親カテゴリーの「Hover」…

3階層目が有る他の2階層目のメニューの「Hover」…

もしくは「Hide Menu」のクリックでしか消えません…

「ul」「li」の入れ子構造…の時点で…お気づきの方もいらっしゃると思われますが…

Internet Explorer 6 以下では正常に動作しません…

更に…対象は「レイアウトテンプレート」です…

では…下準備です…テンプレートのバックアップをお忘れなく…

表示位置は…「header-wrapper」の下の「crosscol-wrapper」です…

「デザイン」「HTMLの編集」「ウィジェットのテンプレートを展開」から…

「Ctrl + F」で「crosscol-wrapper」を検索して該当する箇所を…
  1. <div id='crosscol-wrapper'>
  2. <b:section class='crosscol' id='crosscol' showaddelement='yes'>
  3. ここにガジェットが入ります
  4. </b:section>
  5. </div>
という構造にします…無い方は追加してください…実際の記述は…
  1. <div id='crosscol-wrapper'>
  2. <b:section class='crosscol' id='crosscol' showaddelement='yes'/>
  3. </div>
と、してください…既に他の用途で使っている方は…

「crosscol」を「crosscol1」などにして記述してください…

次に「CSS」部分に以下を記述します…
  1. #container1{width:770px;margin:15px auto 0;padding-left:25px;text-align:left;border-bottom:2px #F15B55 solid;}
「テンプレートを保存」して「デザイン」に戻ると…

「crosscol-wrapper」にガジェットを追加出来るようになっていますので…

「HTML / JavaScript」ガジェットを追加して…

タイトル無しで以下を記述して「保存」…
  1. <div id="container1" align="center">
  2. ここにタブメニューが入ります
  3. </div>



ご自身のサイトを表示させると…

実際は他に何も設定していませんので…

ヘッダーの下に…「ここにタブメニューが入ります」の文字と…

太さ 2px 長さ 770px の赤い枠線が1本表示されれば OK です…

「CSS Sprites」設定編


「CSS Sprites」は…こちらの記事を参照して…

 Tonttu/テンプレート編集に必須な「CSS Sprites」作成ツールの使い方と「HTML」マークアップ


 Google Bloggerで絵文字を使うためのTips【CSS Sprites 編】



お好きなサイズ、色で構築してください…

各階層の画像サイズは階層毎にお好きなサイズで統一してください…

当サイトのタブメニュー画像の1階層目は…

カテゴリー別に「80 x 30」で…

「マウス ON 時の画像」「マウス OFF 時の画像」を登録しています…

タブメニュー画像の2階層目以降はページ読み込み時には非表示部分で…

透過を使ってマウスの「ON / OFF」を表現していますので…

「90 x 20」の1種類だけで OK です…画像作成には…

「OS」標準のソフトや「GIMP」などのフリーソフトでも勿論良いですが…

特化した機能のフリーソフトが手早く作れてお便利です…

「logo 画像作成」などで検索すれば色々出てきます…

タブメニューの画像サイズは自由に設定出来ますから…

近頃よく見かける「3D & 鏡面反射」などでも簡単に作成出来ますので…

クールな目立つタブメニューにしたい方は…

チャレンジしてみてはいかがでしょう…

自分のイメージ通りのサイトに仕上げるためにも…

この際だからロゴ画像とタブメニュー画像を…

ヘッダーを含めてデザイン、レイアウトする事をお奨めします…

コンテナのマークアップ


先ずは「header-wrapper」から「crosscol-wrapper」について…




デザインの基本設定を… 当サイトのように…

ヘッダーに融合させるのか…

それとも…大き目な画像で「crosscol-wrapper」の領域一杯を使うのかを決めます…

後者の場合は以下の基本設定は必要ありません…

1ページ目の下準備ガジェットを表示させながら…

上記画像を参考に…ご自身のサイトに合わせて調整してください…

「デザイン」「HTMLの編集」で「CSS」に以下を記述します…

領域設定の「CSS」



「プレビュー」で確認しながら納得のスタイルになったら…

1ページ目の下準備での「#container1」の「CSS」は…

「Home」でのコンテナとして使いますので…

ご自身の「Home」のテーマカラーに「#F15B55」部分を変更してください…

カテゴリー別に必要な数だけ「#container2」「#container3」……

コンテナを追加します…

タブメニューの1階層目以外のページ用に「#container0」も追加します…

全てのページで同じタブメニューでイイや…

ってな方は「#container0」だけで OK です…

当サイトでは…下記の様になります…

コンテナの「CSS」



コンテナ毎にガジェットが必要になります…

尚…「border-bottom」は「JavaScript」で動的に生成しています…

 「jQuery」「jQuery UI」第6回「Progressbar」動きのあるカラフルな区切り線として使用



タブメニューの「CSS」


下記は 当サイトでの記述ですので…

ご自身のこれまでの設定に合わせて適宜書き換えてください…

実際の記述にコメントアウト形式で解説をしていきますが…

完成したらコメントアウトや余分な改行などは削除してください…

タブメニューの「CSS」「CSS Sprites」



2012.05.01 追記

「id」の「selector」は…
解りやすくするために「subMenu」「endMenu」としていましたが…
ガジェットなどのデザイン変更による仕様変更があったのでしょうか
今回…サイトデザインの変更を行ったら動作しなくなりました…
大文字と小文字が混在しているとガジェットを保存すると…
全て小文字に変換されてしまいます…なので…
「submenu」「endmenu」と…上記コードを書き換えてご使用下さい…

同様の手順で 4階層目以降も作れますが HTML のマークアップとも相まって…

作業がかなり煩雑になりタイプミスなども増えるでしょうから…

先ずは横幅を一杯に使うのが得策かと…

尚…「subMenu」と「endMenu」は将来追加する事を考慮して…

全て記述しておくのも良いでしょう…

HTML マークアップ


先ずは以下を参照して…

1階層目のカテゴリー用 + それ以外のページ用のガジェットとして…

「デザイン」から「crosscol-wrapper」に…

「HTML/Java Script」ガジェットを追加します…

当サイトの場合は…

「9」+「1」で10個のガジェットになります…

判別し易いようにタイトルを付与して…中身はとりあえず「Test」で OK です…

 BloggerでGadgetにTitleを付与したうえでタイトルを表示させない記述



次に「デザイン」「HTMLの編集」「ウィジェットのテンプレートを展開」で…

今追加したガジェットを「Ctrl + F」でタイトルから検索して…

ガジェットを個別ページにのみ「表示させる」設定を行います…

 Bloggerでガジェットをトップ・ページにだけ表示する記述



例えば「Home」カテゴリーならこんな感じ…

個別ページにのみ「表示させる」設定



「それ以外のページ用のガジェット」は…

ガジェットを個別ページにのみ「表示させない」設定を行います…

1階層目のカテゴリーページ以外で表示されるように設定…こんな感じ…

個別ページにのみ「表示させない」設定



「全てのページで同じタブメニュー」にした方は…

3行目と8行目を削除したうえで…このガジェットだけで OK です…

続いてガジェットの中身です…

「CSS Sprites」で設定した各画像は…

「span」タグを使ってこんな感じにマークアップします…
  1. <span class="「Home」マウス OFF 時のクラス名" title="Home"></span>
そして以下は「Home」での設定ですが…ご自身の設定に適宜書き換え…

対応するガジェットに貼りつけてください…

「Home」以外のガジェットの場合は…赤文字の2箇所だけ変更してください…

「コンテナの番号」は「container2」「container3」…ってな感じに…

設定した番号を割り振ってください…

id="selected"」はページ表示時に…

マウス ON 時の画像にロールオーバーさせるための記述ですので…

ガジェットによって対応する「li」箇所に記述してください…

「container0」の場合だけ記述の必要はありません…

「Home」ガジェットの中身



2012.05.01 追記

「id」の「selector」は…「subMenu」「endMenu」から…
「submenu」「endmenu」と…上記コードを書き換えてご使用下さい…

最後は「</body>」直前に以下の「JavaScript」を記述…

「JavaScript」



「テンプレートを保存」して完了です…大変お疲れ様でした…

こちらの記事もどうぞ…

 jQuery UI Extra-1 : 「Menu」part2 マウスホバーでフライアウトする横型ナビゲーション


 「onmouseover」「onmouseout」属性で構築する多階層のドロップダウンナビゲーション




0 Comments :

「jQuery」と「jQuery UI」で HTML に彩りを添えよう…


「導入」「Button」「Accordion」「Tabs」「Effects/Slide」
「Progressbar」「Dialog」「Tooltip」「Menu」
「Extra」 / 公式「Widgets」以外の「jQuery UI」スクリプト
Blogger Template Customize Universal / INDEX

Blogger テンプレート・カスタマイズ / 全般を解説
高速化・最適化対策の結果と備忘録