概要
当サイトで実装しているナビゲーションの解説です…
…と言っても…既に…過去に個別のエフェクトなどは書いていますので
主に…「CSS」「HTML マークアップ」の記述だけになります…
「スクロールで移動」「光源がカーソルに追従するエフェクト」
…を使わなければ「CSS3」だけで構築出来ますが…実装と同様に…
エフェクトを使うのであれば「jQuery」は必須
ですので…未導入の方は…
下部ページング第1回「導入」から導入しておいて下さい…
「jQuery」を使いたくない方はこちらのナビゲーションもお薦めです…
【CSS3】「JavaScript」不要で「display:table;」「ease-in-out」で構築する
多階層ナビゲーション
事前に確認や導入しておく過去記事
ナビゲーションの「 」画像を表示させる仕組み
「Font Awesome」の「query strings」問題を「CSS Sprites」で解決するために
画像に変換するツール【Font Awesome to PNG】
画像を使わずテキストだけで表示する場合は不要です…
ナビゲーションの設置領域の設定とスクロールで移動する仕組み
jQuery UI Extra-2 : 縦スクロール発生時にヘッダーのナビゲーションを
ページ上部にスルスルと移動して固定する
「設置領域の設定」「CSS」「JavaScript」…全て必須です…
マウスホバー時に光源がカーソルに追従するエフェクトの仕組み
jQuery UI Extra-5 : HTML要素のマウスホバー時に光源がカーソルに追従するエフェクト
「CSS」「JavaScript」…共に必須です…
3階層ドロップダウンナビゲーションの仕組み
「onmouseover」「onmouseout」属性で構築する多階層のドロップダウンナビゲーション
概ね…考え方は記事通りですが…あくまでも簡易的なものですから
実装ナビゲーションでは…「HTML」に直書きの「JavaScript」を使わず…
「CSS3」だけで…別途下記のように設定しています…
なので…「スクロールで移動」「光源がカーソルに追従するエフェクト」
…を使わなければ…背景を別途設定して「CSS3」だけで構築出来ます…
因みに…名称は…「Navigation Light」です…
実装している「Navigation Light」の「CSS」
ナビゲーションの初期位置はサイト左上を起点に…
「
top:136px;left:142px;
」です…
1階層目のリスト幅は…「
width:100px;
」部分…
下位階層のリスト幅は…「
width:140px;
」部分で…
リストの高さは共通で…「
line-height:25px;
」部分です…
マウスホバーで出現するカテゴリー毎に色が違う左枠線は…
光源色と同系色を「
.c-1
」~「
.c-9
」で設定しています…
幅が「
5px
」ですので…マウスホバー時には…
「
li a:hover{margin-right:-5px;
」と…ネガティブマージンを設定しています
なので…1階層目と下位階層で…テキストなどに使用出来る幅は…
それぞれ…「
95px
」「
135px
」…って事になります…
下位階層がある場合はリスト内の「
top:10px;right:10px;
」位置に…
「
li.down>a::after{……}
」で設定した白色の南向き三角形が表示されます…
下位階層があるリストに「
.down
」を設定して下さい…
「光源がカーソルに追従するエフェクト」の…
「CSS」との兼ね合いもありますので
1階層目の文字色は「
#fff
」で下位階層は「
#c0c0c0
」です…
どちらも…斜体で…マウスホバーで文字色「
#fff
」で太字になります…
まぁ…色々と…ご自身のサイトに合わせて弄って下さい…
「CSS3」ですので…古いブラウザでは動作しません…
「Navigation Light」の「CSS」
div.nav-top{position:relative;top:136px;left:142px;z-index:10;width:auto;text-align:left;}
ul.nav-light{width:auto;height:25px;margin:0;padding:0;float:left;}
ul.nav-light li{list-style:none;display:inline-block;zoom:1;float:left;margin:0;padding:0;position:relative;}
ul.nav-light li a{width:100px;display:block;line-height:25px;text-decoration:none;color:#fff;padding:0;}
ul.nav-light li a:hover{margin-right:-5px;}
ul.nav-light li.down>a::after{content:"";width:0;height:0;border-width:5px 3px;border-style:solid;border-color:#fff transparent transparent transparent;position:absolute;top:10px;right:10px;}
ul.nav-light li:hover>a{background-color:transparent;}
ul.nav-light .c-1 a:hover{border-left:5px solid #f15b55;}
ul.nav-light .c-2 a:hover{border-left:5px solid #1e90ff;}
ul.nav-light .c-3 a:hover{border-left:5px solid #dda0dd;}
ul.nav-light .c-4 a:hover{border-left:5px solid #2e8b57;}
ul.nav-light .c-5 a:hover{border-left:5px solid #4169e1;}
ul.nav-light .c-6 a:hover{border-left:5px solid #8ac75a;}
ul.nav-light .c-7 a:hover{border-left:5px solid #008080;}
ul.nav-light .c-8 a:hover{border-left:5px solid #bdb76b;}
ul.nav-light .c-9 a:hover{border-left:5px solid #c0c0c0;}
ul.nav-light ul.sub-menu1{position:absolute;z-index:5;padding:0;margin:0;width:140px;font-weight:normal;display:none;}
ul.nav-light li:hover ul.sub-menu1.hidden{display:block;}
ul.nav-light ul li{float:none;display:block;}
ul.nav-light ul a{color:#c0c0c0;width:140px;}
ul.sub-menu1 ul.sub-menu2{position:absolute;top:5px;left:139px;z-index:5;width:140px;font-weight:normal;display:none;margin:0;padding:0;}
ul.sub-menu1 li:hover ul.sub-menu2.hidden{display:block;}
実装している「Navigation Light」の「JavaScript」
上記…過去記事と同じですが再掲しておきます…
「Navigation Light」の「JavaScript」
/* Dropdown Fixed Navigation */
$(function(){var b=$(".nav");var a=b.offset().top;$(window).scroll(function(){var c=$(this).scrollTop();if(c+120>=a){b.addClass("fixed").stop().animate({"top":"0px"},1000)}else{if(c+120<=a){b.removeClass("fixed").stop().animate({"top":"128px"},1000)}}})});
/* Fantasic Light */
$(function(){$(".light a").each(function(){var a=$(this);a.lightBG=$(document.createElement("div")).css({opacity:0});a.lightBG.insertBefore(a);a.mousemove(function(b){a.lightBG.css({"background-position":-((600/2)-(b.originalEvent.layerX||b.originalEvent.offsetX||0))+"px top"})});a.hover(function(){a.lightBG.stop().animate({opacity:1},300)},function(){a.lightBG.stop().animate({opacity:0},300)})})});
実装している「Navigation Light」の「HTML マークアップ」
下位階層があるカテゴリーの場合は「URL」ではなく…
「#」でページトップへのリンクにしています…
ご自身のサイト構成に合わせて適宜変更して下さい…
「スクロールで移動」「光源がカーソルに追従するエフェクト」
…を使わない場合は当然ながら…不要になる「クラス名」が出ますが…
動作的には問題ありません…お好みで該当「クラス名」を削除して下さい…
「Navigation Light」の「HTML マークアップ」
<div class="nav nav-top">
<ul class="light nav-light">
<li class="light-r c-1"><a href="URL"><span class="id201"></span> Home</a></li>
<li class="light-b c-2 down"><a href="#">Blog</a>
<ul class="sub-menu1 hidden">
<li class="down"><a href="#">Opinion</a>
<ul class="sub-menu2 hidden">
<li><a href="URL">2015</a></li>
<li><a href="URL">2014</a></li>
<li><a href="URL">2013</a></li>
<li><a href="URL">2012</a></li>
<li><a href="URL">2011</a></li>
</ul>
</li>
<li class="down"><a href="#">Depressing</a>
<ul class="sub-menu2 hidden">
<li><a href="URL">2015</a></li>
<li><a href="URL">2014</a></li>
<li><a href="URL">2013</a></li>
<li><a href="URL">2012</a></li>
<li><a href="URL">2011</a></li>
<li><a href="URL">before :: 2010</a></li>
</ul>
</li>
<li class="down"><a href="#">Blockquote</a>
<ul class="sub-menu2 hidden">
<li><a href="URL">2015</a></li>
<li><a href="URL">2014</a></li>
<li><a href="URL">2013</a></li>
<li><a href="URL">2012</a></li>
<li><a href="URL">2011</a></li>
<li><a href="URL">before :: 2010</a></li>
</ul>
</li>
<li class="down"><a href="#">Pottering</a>
<ul class="sub-menu2 hidden">
<li><a href="URL">2015</a></li>
<li><a href="URL">2014</a></li>
<li><a href="URL">2013</a></li>
<li><a href="URL">2012</a></li>
<li><a href="URL">2011</a></li>
<li><a href="URL">before :: 2010</a></li>
</ul>
</li>
<li class="down"><a href="#">Blog</a>
<ul class="sub-menu2 hidden">
<li><a href="URL">2015</a></li>
<li><a href="URL">2014</a></li>
<li><a href="URL">2013</a></li>
<li><a href="URL">2012</a></li>
<li><a href="URL">2011</a></li>
<li><a href="URL">before :: 2010</a></li>
</ul>
</li>
</ul>
</li>
<li class="light-p c-3 down"><a href="#">Labs</a>
<ul class="sub-menu1 hidden">
<li><a href="URL">Browser</a></li>
<li><a href="URL">Laboratory</a></li>
</ul>
</li>
<li class="light-g c-4 down"><a href="#">Blogger</a>
<ul class="sub-menu1 hidden">
<li><a href="URL">Tips</a></li>
<li class="down"><a href="#">Customize</a>
<ul class="sub-menu2 hidden">
<li><a href="URL">Universal</a></li>
<li><a href="URL">Header</a></li>
<li><a href="URL">Sidebar</a></li>
<li><a href="URL">Main</a></li>
<li><a href="URL">Footer</a></li>
</ul>
</li>
<li><a href="URL">Optimization</a></li>
</ul>
</li>
<li class="light-rb c-5 down"><a href="#">Design</a>
<ul class="sub-menu1 hidden">
<li><a href="URL">Design</a></li>
<li class="down"><a href="#">jQuery</a>
<ul class="sub-menu2 hidden">
<li><a href="URL">jQuery UI</a></li>
<li><a href="URL">jQuery UI Extra</a></li>
</ul>
</li>
<li><a href="URL">JavaScript</a></li>
</ul>
</li>
<li class="light-s c-6 down"><a href="#">Video</a>
<ul class="sub-menu1 hidden">
<li class="down"><a href="#">Selection</a>
<ul class="sub-menu2 hidden">
<li><a href="URL">J-Pops Woman</a></li>
<li><a href="URL">J-Pops Man</a></li>
<li><a href="URL">Pops Woman</a></li>
<li><a href="URL">Pops Man</a></li>
</ul>
</li>
<li><a href="URL">J-Pops Woman</a></li>
<li><a href="URL">J-Pops Man</a></li>
<li><a href="URL">Pops Woman</a></li>
<li><a href="URL">Pops Man</a></li>
<li><a href="URL">Other Files</a></li>
</ul>
</li>
<li class="light-t c-7 down"><a href="#">Music</a>
<ul class="sub-menu1 hidden">
<li class="down"><a href="#">Selection</a>
<ul class="sub-menu2 hidden">
<li><a href="URL">J-Pops Woman</a></li>
<li><a href="URL">J-Pops Man</a></li>
<li><a href="URL">Pops Woman</a></li>
<li><a href="URL">Pops Man</a></li>
</ul>
</li>
<li><a href="URL">J-Pops Woman</a></li>
<li><a href="URL">J-Pops Man</a></li>
<li><a href="URL">Pops Woman</a></li>
<li><a href="URL">Pops Man</a></li>
</ul>
</li>
<li class="light-y c-8 down"><a href="#">External</a>
<ul class="sub-menu1 hidden">
<li><a href="URL">BBS</a></li>
<li><a href="URL">Tumblr</a></li>
</ul>
</li>
</ul>
</div>
おわりに…
少しばかり…手抜き感がある記事になってしまいましたね… ( ̄ー ̄) 邪笑®
でも…まぁ…過去記事で書いてきた事とは言え
組み合わせて構築して…サイト全体として纏めるのが肝な訳です…
しかしながら…
Blogger も…ここ数年で格段の進歩を遂げ…
見栄えの良いサイトを…かなり…簡単に構築出来るようになりましたので…
テンプレートをカスタマイズする需要は…どんどん…減り続ける事でしょう…
「
WordPress」をぶっ飛ばせ
「blogspot」ドメインでもここまで出来るんだぞ
…的な事で…楽しみながらカスタマイズして来ましたが…
このカテゴリーの記事は…そろそろ…潮時のような気がしますねぇ…
オマケに…ゴリゴリの…遅筆ですからね… ( ̄^ ̄) エッヘン
まぁ…従来通り…ボチボチやって行きます…
以上
です…最後までお読みいただきましてありがとうございます…
0 Comments :
View Comments :: Click!!
0 Comments :
Post a Comment :: Click!!
コメントを投稿