高機能なセレクターをお持ちであれば、ドロップダウンメニューは簡単作ることができます。好きなCSS3プロパティを入れてみると、背景画像やJavaScriptでしか得るこのできなかったデザインを作り出せます。下記のチュートリアル通りにCSSドロップダウンメニューを作ってみてください。
メニューを開くと、2つのサブカテゴリも開きます。最初のサブリンクはメインナビゲーションバーに下に現れ、2番目は最初のドロップダウンから垂直に伸びています。CSSドロップダウンメニューのデモ動画を見てみて早速行動に移りましょう。
HTML構造
<nav> <ul> <li><a href="#">Home</a></li> <li><a href="#">Tutorials</a></li> <li><a href="#">Articles</a></li> <li><a href="#">Inspiration</a></li> </ul> </nav>
まず第1に、CSSメニューのためにHTMLを作成する必要があります。HTML5を使い、ナビゲーションメニューを〈nav〉要素に組織します、そしてはじめのナビゲーションリンクをシンプルなリストに加えます。
<nav> <ul> <li><a href="#">Home</a></li> <li><a href="#">Tutorials</a> <ul> <li><a href="#">Photoshop</a></li> <li><a href="#">Illustrator</a></li> <li><a href="#">Web Design</a></li> </ul> </li> <li><a href="#">Articles</a> <ul> <li><a href="#">Web Design</a></li> <li><a href="#">User Experience</a></li> </ul> </li> <li><a href="#">Inspiration</a></li> </ul> </nav>
はじめのサブメニューをTutorialsの下とArticlesのリンクの下に入れ、〈Li〉と打ち込むことでメニューが完成します。
<nav> <ul> <li><a href="#">Home</a></li> <li><a href="#">Tutorials</a> <ul> <li><a href="#">Photoshop</a></li> <li><a href="#">Illustrator</a></li> <li><a href="#">Web Design</a> <ul> <li><a href="#">HTML</a></li> <li><a href="#">CSS</a></li> </ul> </li> </ul> </li> <li><a href="#">Articles</a> <ul> <li><a href="#">Web Design</a></li> <li><a href="#">User Experience</a></li> </ul> </li> <li><a href="#">Inspiration</a></li> </ul> </nav>
2番目のサブメニューをはじめのサブメニューのWeb Designセクションの下におきます。このリンクはまたリストに配置され、Web Designのセクションに挿入されます。
ここまでやってみるときちんとしたリンクを持つサブメニューを作り出すことができます。
CSSのスタイル
nav ul ul { display: none; } nav ul li:hover > ul { display: block; }
ドロップダウン機能を働かせるためにCSSを使いましょう。CSSの特異性と高機能なセレクターによって無駄なidやクラスなしに特定のHTMLを探し当てることができます。まずサブメニューを隠すためにULdisplay:noun;を使います。再度表示させるには、LIの要素をまたブロックする必要があります。〉のセレクターによって、サブメニューを全て表示させることなく、子機のULだけがターゲットされるようにしましょう。
nav ul { background: #efefef; background: linear-gradient(top, #efefef 0%, #bbbbbb 100%); background: -moz-linear-gradient(top, #efefef 0%, #bbbbbb 100%); background: -webkit-linear-gradient(top, #efefef 0%,#bbbbbb 100%); box-shadow: 0px 0px 9px rgba(0,0,0,0.15); padding: 0 20px; border-radius: 10px; list-style: none; position: relative; display: inline-table; } nav ul:after { content: ""; clear: both; display: block; }
そしてメインのナビゲーションメニューに取り掛かることができます。傾斜やボックスシャドウ、ボーダー記号などのCSS3プロパティを使います。position:relative;を加えることによって、メインメニューバーにサブメニューバーを設置することができ、display:inlin-tableによってちょうどいいサイズのメニューに縮めてくれます。クリアフィックスがoverflow:hiddenを使う必要なく、サブメニューが表示されなくなるのを阻止してくれます。
nav ul li { float: left; } nav ul li:hover { background: #4b545f; background: linear-gradient(top, #4f5964 0%, #5f6975 40%); background: -moz-linear-gradient(top, #4f5964 0%, #5f6975 40%); background: -webkit-linear-gradient(top, #4f5964 0%,#5f6975 40%); } nav ul li:hover a { color: #fff; } nav ul li a { display: block; padding: 25px 40px; color: #757575; text-decoration: none; }
個別のメニューは〈Li〉を加えたCSSによってデザインされます。ブラウザの中にリンクを作り上げ、青色の背景と白色のテキストに変えます。
nav ul ul { background: #5f6975; border-radius: 0px; padding: 0; position: absolute; top: 100%; } nav ul ul li { float: none; border-top: 1px solid #6b727c; border-bottom: 1px solid #575f6a; position: relative; } nav ul ul li a { padding: 15px 40px; color: #fff; } nav ul ul li a:hover { background: #4b545f; }
メインメニューバーは出来上がりましたが、サブメニューには少し修正が必要です。メニューバーと少しスタイルが似ているので背景とボーダーをなくし、別のものを配置することでもっといいデザインとなります。ちゃんとメニューバーの下に表示させるにはULの一番上に配置されなければなりません。
ULのそれぞれのLIは隣に浮いている必要はありません。代わりに垂直に配置され、細い線で互いから分かれているのがベストです。素早い移動エフェクトによって背景を暗くすることによってさらに良くなります。
nav ul ul ul { position: absolute; left: 100%; top:0; }
最後のステップはサブメニューのさらにサブメニューを配置することです。サブメニューの特徴を受け継ぎ、ちゃんと〈Li〉右側に配置されればいいだけとなります。