Movable Type 備忘録
CSSでドロップメニュー
- Prev Page: アンケートツクレール
- Next Page: 日本歴史占い
こんにちわ^^
今日は風の強い1日でしたが、久しぶりに幼馴染みから連絡があって、銀座で飲んできました (●´∀`●)
赤ワインを飲み過ぎせいか、かなり体が火照ってます (//▽//)
さて、気をとり直して、先日ドロップメニューのやり方教えて・・・と友人からTELがありました。
はて!? だいぶ前にやり方など教えたはずだが、すっかり忘れてしまっているようなので、改めてCSSでドロップメニューをご紹介します。
これから紹介する示す各ドロップメニューは共通のXHTMLを使用しています。
以下にそのXHTMLを記します。
ドロップメニュー
<div id="menu"><ul><li><a href="javascript:void(0);" class="hide">MENU 1</a><!--[if lte IE 6]><a href="javascript:void(0);">MENU 1<table><tr><td><![endif]--><ul><li><a href="javascript:void(0);">MENU 1-1</a></li><li><a href="javascript:void(0);" class="hide">MENU 1-2 ></a><!--[if lte IE 6]><a class="sub" href="javascript:void(0);">MENU 1-2 ><table><tr><td><![endif]--><ul><li><a href="javascript:void(0);">MENU 1-2-1</a></li><li><a href="javascript:void(0);">MENU 1-2-2</a></li><li><a href="javascript:void(0);">MENU 1-2-3</a></li></ul><!--[if lte IE 6]></td></tr></table></a><![endif]--></li><li><a href="javascript:void(0);">MENU 1-3</a></li><li><a href="javascript:void(0);" class="hide">MENU 1-4 ></a><!--[if lte IE 6]><a class="sub" href="javascript:void(0);">MENU 1-4 ><table><tr><td><![endif]--><ul><li><a href="javascript:void(0);">MENU 1-4-1</a></li><li><a href="javascript:void(0);">MENU 1-4-2</a></li><li><a href="javascript:void(0);">MENU 1-4-3</a></li><li><a href="javascript:void(0);">MENU 1-4-4</a></li></ul><!--[if lte IE 6]></td></tr></table></a><![endif]--></li><li><a href="javascript:void(0);">MENU 1-5</a></li></ul><!--[if lte IE 6]></td></tr></table></a><![endif]--></li><li><a href="javascript:void(0);" class="hide">MENU 2</a><!--[if lte IE 6]><a href="javascript:void(0);">MENU 2<table><tr><td><![endif]--><ul><li><a href="javascript:void(0);">MENU 2-1</a></li><li><a href="javascript:void(0);">MENU 2-2</a></li><li><a href="javascript:void(0);">MENU 2-3</a></li></ul><!--[if lte IE 6]></td></tr></table></a><![endif]--></li><li><a href="javascript:void(0);" class="hide">MENU 3</a><!--[if lte IE 6]><a href="javascript:void(0);">MENU 3<table><tr><td><![endif]--><ul><li><a href="javascript:void(0);">MENU 3-1</a></li><li><a href="javascript:void(0);">MENU 3-2</a></li><li><a href="javascript:void(0);">MENU 3-3</a></li><li><a href="javascript:void(0);">MENU 3-4</a></li></ul><!--[if lte IE 6]></td></tr></table></a><![endif]--></li><li><a href="javascript:void(0);" class="hide">MENU 4</a><!--[if lte IE 6]><a href="javascript:void(0);">MENU 4<table><tr><td><![endif]--><ul><li><a href="javascript:void(0);">MENU 4-1</a></li><li><a href="javascript:void(0);">MENU 4-2</a></li><li><a href="javascript:void(0);">MENU 4-3</a></li></ul><!--[if lte IE 6]></td></tr></table></a><![endif]--></li><li><a href="javascript:void(0);" class="hide">MENU 5</a><!--[if lte IE 6]><a href="javascript:void(0);">MENU 5<table><tr><td><![endif]--><ul><li><a href="javascript:void(0);">MENU 5-1</a></li><li><a href="javascript:void(0);">MENU 5-2</a></li><li><a href="javascript:void(0);" class="hide">< MENU 5-3</a><!--[if lte IE 6]><a class="sub" href="javascript:void(0);">< MENU 5-3<table><tr><td><![endif]--><ul class="left"><li><a href="javascript:void(0);">MENU 5-3-1</a></li><li><a href="javascript:void(0);">MENU 5-3-2</a></li><li><a href="javascript:void(0);">MENU 5-3-3</a></li></ul><!--[if lte IE 6]></td></tr></table></a><![endif]--></li></ul><!--[if lte IE 6]></td></tr></table></a><![endif]--></li></ul></div><!-- menu -->
縦にレイアウトしたドロップメニュー
まずはサンプルですね。
サンプルを表示できませんでした。上記のサンプルでは、メニュー項目を縦にレイアウトして、ネストするごとに右にシフトしていくタイプのドロップメニューになります。
スタイルシートは以下のようになります。
IE7含むモダンブラウザー用
<style type="text/css">/*▼メニューブロック▼*/div#menu {width: 126px; /*メニュー階層1幅① + 2px */height: 150px; /*メニュー項目数に応じて調整 */position: relative;font-size: 12px;}/*▲メニューブロック▲*//*▼メニュー階層1▼*/div#menu ul li a, div#menu ul li a:visited {width: 124px; /*メニュー階層1幅① */height: 20px; /*メニュー階層1高さ① */display: block;text-decoration: none;line-height: 19px; /*メニュー階層1高さ - 1px */font-size: 11px;text-indent: 1em;color: #4c597f; /*メニュー階層1前景色 */background: #eee; /*メニュー階層1背景色 */border: 1px solid #000; /*サイトの背景色を指定する */border-width: 1px 1px 0 0;}div#menu ul {margin: 0;padding: 0;list-style-type: none;}div#menu ul li {margin-right: 1px;float: left;position: relative;}div#menu ul li ul {display: none;}div#menu ul li:hover a {color: #eee; /*ホバー時の前景色 */background: #4c597f; /*ホバー時の背景色 */}/*▲メニュー階層1▲*//*▼メニュー階層2▼*/div#menu ul li:hover ul {width: 125px; /*メニュー階層2幅 + 1px */position: absolute;top: 0;left: 125px; /*メニュー階層1幅 + 1px */display: block;}div#menu ul li:hover ul li a.hide {color: #eee; /*入れ子メニュー前景色 */background: #4c597f; /*入れ子メニュー背景色 */}div#menu ul li:hover ul li:hover a.hide {width: 125px; /*メニュー階層2幅と同じ */}div#menu ul li:hover ul li ul {display: none;}div#menu ul li:hover ul li a {width: 125px; /*メニュー階層2幅と同じ */display: block;color: #4c597f; /*メニュー階層2前景色 */background: #eee; /*メニュー階層2背景色 */}div#menu ul li:hover ul li a:hover {color: #eee; /*ホバー時の前景色 */background: #a22041; /*ホバー時の背景色 */}/*▲メニュー階層2▲*//*▼メニュー階層3▼*/div#menu ul li:hover ul li:hover ul {position: absolute;left: 126px; /*メニュー階層2幅 + 1px */top: 0;display: block;color: #000;}div#menu ul li:hover ul li:hover ul li a {width: 125px; /*メニュー階層3幅 */display: block;color: #4c597f; /*メニュー階層3前景色 */background: #eee; /*メニュー階層3背景色 */}div#menu ul li:hover ul li:hover ul li a:hover {color: #eee; /*ホバー時の前景色 */background: #769164; /*ホバー時の背景色 */}/*▲メニュー階層3▲*/</style>
そして、以下はIE6用のスタイルシートになります。
IE6用
<!--[if lte IE 6]><style type="text/css">div#menu table {margin: 0;padding: 0;border-collapse: collapse;border: 0;z-index:100;}div#menu ul li a.hide, div#menu ul li a:visited.hide {display: none;}div#menu ul li a:hover ul li a.hide {display: none;}div#menu ul li a:hover {color: #eee; /*ホバー時の前景色 */background: #4c597f; /*ホバー時の背景色 */}div#menu ul li a:hover ul {width: 125px; /*メニュー階層2幅 + 1px */position: absolute;top: 0;left: 125px; /*メニュー階層1幅 + 1px */display: block;}div#menu ul li a:hover ul li a.sub {color: #eee; /*入れ子メニュー前景色 */background: #4c597f; /*入れ子メニュー背景色 */}div#menu ul li a:hover ul li a {width: 125px; /*メニュー階層2幅と同じ */display: block;color: #4c597f; /*メニュー階層2前景色 */background: #eee; /*メニュー階層2背景色 */}div#menu ul li a:hover ul li a ul {visibility: hidden;}div#menu ul li a:hover ul li a:hover {color: #eee; /*ホバー時の前景色 */background: #a22041; /*ホバー時の背景色 */}div#menu ul li a:hover ul li a:hover ul {visibility: visible;position: absolute;left: 126px; /*メニュー階層2幅 + 1px */top: 0;color: #000;}div#menu ul li a:hover ul li a:hover ul li a {width: 125px; /*メニュー階層3幅 */display: block;color: #4c597f; /*メニュー階層3前景色 */background: #eee; /*メニュー階層3背景色 */}div#menu ul li a:hover ul li a:hover ul li a:hover {color: #eee; /*ホバー時の前景色 */background: #769164; /*ホバー時の背景色 */}</style><![endif]-->
通常のドロップメニュー
まずはサンプルですね。
サンプルを表示できませんでした。上記のサンプルでは、一般的なドロップメニューになります。
スタイルシートは以下のようになります。
IE7含むモダンブラウザー用
<style type="text/css">div#menu {width: 435px; /*メニュー全体の幅 *//*(メニュー幅 + ボーダー横幅(2px) + 余白(1px)) x メニュー項目数*/position: relative;font-size: 11px;z-index: 100;}div#menu ul li a, div#menu ul li a:visited {width: 84px; /*メニュー幅 */height: 20px; /*メニュー高さ */display: block;line-height: 20px;overflow: hidden;font-size: 11px;text-decoration: none;text-align: center;color: #4c597f; /*メニュー前景色 */background: #eee; /*メニュー背景色 */border: 1px solid #eee;}div#menu ul {padding: 0;margin: 0;list-style-type: none;}div#menu ul li {margin-right: 1px;float: left;position: relative;}div#menu ul li ul {display: none;}div#menu ul li:hover a {color: #eee; /*ホバー時の前景色 */background: #4c597f; /*ホバー時の背景色 */}div#menu ul li:hover ul {width: 85px; /*メニュー幅 + 1px */position: absolute;top: 21px; /*メニュー高さ + 1px */left: 0;display: block;}div#menu ul li:hover ul li a.hide {color: #eee; /*入れ子メニュー前景色 */background: #4c597f; /*入れ子メニュー背景色 */}div#menu ul li:hover ul li:hover a.hide {color: #eee; /*入れ子メニューホバー時の前景色 */background: #a22041; /*入れ子メニューホバー時の背景色 */}div#menu ul li:hover ul li ul {display: none;}div#menu ul li:hover ul li a {display: block;color: #4c597f; /*ドロップメニュー前景色 */background: #eee; /*ドロップメニュー背景色 */}div#menu ul li:hover ul li a:hover {color: #eee; /*ドロップ目ヒューホバー時の前景色*/background: #a22041; /*ドロップメニューホバー時の背景色*/}div#menu ul li:hover ul li:hover ul {position: absolute;left: 85px; /*メニュー幅と同じ */top: 0;display: block;}div#menu ul li:hover ul li:hover ul.left {left: -85px; /*メニュー幅と同じ *//*右端のドロップメニューを左側に表示するため*/}</style>
そして、以下はIE6用のスタイルシートになります。
IE6用
<!--[if lte IE 6]><style type="text/css">div#menu ul li a.hide, div#menu ul li a:visited.hide {display: none;}div#menu ul li a:hover ul li a.hide {display: none;}div#menu ul li a:hover {color: #eee; /*ホバー時の前景色 */background: #4c597f; /*ホバー時の背景色 */}div#menu ul li a:hover ul {width: 85px; /*メニュー幅 + 1px */position: absolute;top: 21px; /*メニュー高さ + 1px */left: 0;display: block;}div#menu ul li a:hover ul li a.sub {color: #eee; /*入れ子メニュー前景色 */background: #4c597f; /*入れ子メニュー背景色 */}div#menu ul li a:hover ul li a {display: block;color: #4c597f; /*ドロップメニュー前景色 */background: #eee; /*ドロップメニュー背景色 */}div#menu ul li a:hover ul li a ul {visibility: hidden;}div#menu ul li a:hover ul li a:hover {color: #eee; /*ドロップ目ヒューホバー時の前景色*/background: #a22041; /*ドロップメニューホバー時の背景色*/}div#menu ul li a:hover ul li a:hover ul {visibility: visible;position: absolute;left: 85px; /*メニュー幅と同じ */top: 0;color: #000;}div#menu ul li a:hover ul li a:hover ul.left {left: -85px; /*メニュー幅と同じ *//*右端のドロップメニューを左側に表示するため*/}</style><![endif]-->
各スタイルシートにコメントを入れましたので、各自のお好みで調整してください。
とりあえず、WIN/IE6、IE7、Firefox2.0、Opera9.2で表示確認済みです。
Trackback Pings(0)
No trackbacks found.
Comments(0)
No comments found.



Post a Comment