プルダウンメニューのcurrentの使い方

このQ&Aのポイント
  • CSSで制作した横型プルダウンメニューで、「current」を使って現在のページのボタンの色を変えたいが、子メニューの色まで変わってしまう問題に直面しています。
  • 親メニューのボタンだけを変えて、子メニューの色は変えない方法があるのかを知りたいです。
  • currentで表示する色と子メニューのロールオーバー時の色は同じです。
回答を見る
  • ベストアンサー

プルダウンメニューのcurrentの使い方

こんばんは。初心者で質問自体説明不足かもしれませんが、 どなたかご教授願えたら幸いです。 CSSでサイトを制作しており、ほぼCSSでできる横型プルダウンメニューを設置しました。 以下の様に「current」を使用して現在ページのメニューボタンの色を変えているのですが、 <ul> <li class="current"><a href="#">menu</a> <ul> <li><a href="#">submenu</a></li> <li><a href="#">submenu</a></li> </ul> </li> </ul> 上記のプルダウンメニューだと、入れ子の子メニューにも「current」 が適用されて、一緒に色が変わってしまいます。 親メニューのボタンの色だけを変えて、 子メニューの色まで変えない事はできるのでしょうか・・・。 ちなみに、currentで表示させる色と、子メニューのロールオーバー時の色は一緒です。 説明不足ですみませんが、どうぞよろしくお願い致します。

  • CSS
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

とりあえず、子供セレクタを理解しない古いブラウザ対応。 子供セレクタ対応のモダンブラウザなら、直接指定すると簡単です。 要は、詳細度をきちんと計算すること--常識的な結果ですが--- ★リキッドデザインでデザインしてあります。 ★タブは_に置換してある。 <div class="nav"> _<ul> __<li><a href="./">トップ</a></li> __<li class="current"><a href="./product">製品</a> ___<ul> ____<li><a href="./product/a">A群</a></li> ____<li><a href="./product/b">B群</a></li> ____<li><a href="./product/c">C群</a></li> ___</ul> __</li> __<li><a href="./service">サービス</a> ___<ul> ____<li class="current"><a href="./service/a">A群</a></li> ____<li><a href="./service/b">B群</a></li> ____<li><a href="./service/c">C群</a></li> ___</ul> __</li> __<li><a href="./profile">会社</a></li> __<li><a href="./mail">メール</a></li> _</ul> </div> div.nav{width:80%;height:34px;margin:0 auto;text-align:center;line-height:30px;} div.nav ul,div.nav ul li{display:block;list-style:none;margin:0;padding:0;} div.nav ul li{float:left;width:19%;} div.nav ul li ul li{float:none;width:100%;} div.nav ul li a{ display:block;width:100%;height:100%; text-decoration:none; background-color:yellow; border:outset 2px silver;outline:none; } /* 詳細度 0014 */ div.nav ul li a:hover{background-color:rgb(255,255,200);}/* 詳細度 0024 */ div.nav ul li.current a{background-color:red;} /* 詳細度 0024 */ div.nav ul li.current a:hover{background-color:rgb(255,200,200);} /* 詳細度 0034 */ div.nav ul li.current ul li a{background-color:yellow;} /* 詳細度 0026 */ div.nav ul li.current ul li a:hover{background-color:rgb(255,255,200);}/* 詳細度 0036 */ div.nav ul li ul{display:none;} div.nav ul li a:active{border-style:inset;} div.nav ul li:hover ul{display:block;}

space283
質問者

お礼

お忙しい中ありがとうございました! こんなに詳細にご説明くださり恐縮です・・・(涙)。 見よう見まねでCSSを追加してみました所、思い通りの結果となりました。 まだまだ内容を理解できていない部分もあり、自分のものにできていないので、後日しっかり内容を確認して勉強させていただきます! 初めてプルダウンに挑戦して、このプルダウンが最後の問題だったので、本当に助かりました(涙)大変勉強になりました。ありがとうございました!

その他の回答 (1)

  • sagamit
  • ベストアンサー率37% (39/105)
回答No.1

こんな要領でいかがでしょう。 .current { background-color: red; } .current > ul { background-color: blue; } .current > ul > li:hover { background-color: red; }

space283
質問者

お礼

お忙しい中ありがとうございました! まだまだ勉強不足ですぐには応用して活用できずにおりますが(汗)こういう方法もあるのですね。 次回、CSS組みなおしてやってみます! 大変勉強になりました!ありがとうございました☆

関連するQ&A

  • css でのプルダウン子階層の色について

    こんばんは。初心者で質問自体説明不足かもしれませんが、 どなたかご教授願えたら幸いです。 前回も似たような内容で教えていただいたんですが、 知識不足で少し変わると応用する事ができず、困っております(涙) CSSでサイトを制作しており、CSSでできる、 画像を使用した横型プルダウンメニュー(プルダウンは縦)を設置しました。 表示中のページがわかるように、 以下の様に、bodyにidをつけて、bacground-positionをマイナスして画像の下側を 表示させているのですが、子メニューが親メニューと一緒にpositionがマイナス されて、current時のボタン表示になってしまいます。 ****************************************** <body id="01"> <menu> <ul> <li id="menu1"><a href="#">menu</a> <ul> <li id="submenu1"><a href="#">submenu</a></li> <li id="submenu2"><a href="#">submenu</a></li> </ul> </li> </ul> </menu> </body> --------css---------------------------- #menu {width:835px; ~(etc)} #menu #menu1 a {background-image:url(image/***.jpg);width:65px;} #menu #submenu1 a {background-image:url(image/***.jpg);width:65px;} #menu #submenu1 a {background-image:url(image/***.jpg);width:65px;} #menu #current a {background-position:0 -40px;} #p01 #menu #menu1 a {background-position:0 -40px;} ****************************************************** 親メニューのボタンだけのpositionをマイナスにして、 子メニューは適用しない方法を教えて頂けますでしょうか・・・。 また、子メニューの方にも表示中のページをわかるようにするには、 どこにどのような記述をすればよかったでしょうか? 上記のソースに何か追加や修正をしてできるものがあれば、 大変助かります。 説明不足ですみませんが、どうぞよろしくお願い致します。

    • 締切済み
    • CSS
  • jQuery プルダウンメニュー

    プルダウンメニューの一部で行き詰っています。 メニュー1のサブメニューが開いている状態で、メニュー2をクリックした時 メニュー1のサブメニューが閉じるようにする(その逆パターンも含む)。 サブメニューにカーソルがある時、メニューはhoverさせないようにする。 ▼html----------------------------------------- <ul id="gNav"> <li>メニュー1 <ul> <li><a href="">サブメニュー1-1</a></li> </ul> </li> <li>メニュー2 <ul> <li><a href="">サブメニュー2-1</a></li> <li>サブメニュー2-2 <ul> <li><a href="">サブメニュー2-2-1</a></li> <li><a href="">サブメニュー2-2-2</a></li> <li><a href="">サブメニュー2-2-3</a></li> </ul> </li> </ul> </li> <li><a href="">メニュー3</a></li> </ul> ▼jQuery----------------------------------------- $(function(){ $("#gNav > li").click(function(){ $(this).children("ul").toggle(); }); $("#gNav > li > ul > li").mouseenter(function(){ $(this).children("ul").show(); }).mouseleave(function(){ $(this).children("ul").hide(); }); $("#gNav > li").hover(function(){ $(this).css("background-color","#ff9900"); },function(){ $(this).css("background-color","#ffcc00"); }); $("#gNav > li > ul > li").hover(function(){ $(this).css("background-color","#99cc66"); },function(){ $(this).css("background-color","#669933"); }); $("#gNav > li > ul >li > ul >li").hover(function(){ $(this).css("background-color","#dddddd"); },function(){ $(this).css("background-color","#eeeeee"); }); }); 宜しくお願いします。

  • IE8でli:hoverが効かない

    Window7 IE8を使っています。 ホームページにcssを使ったドロップダウンメニューを導入したいのですが、 li:hoverが効きません。 cssかhtmlが間違っているのかと思い、念のためいろいろなサイトから cssドロップダウンメニューの例文をもらってきて 書き込んでみましたが、どうしてもサブメニューが表示されません。 たとえば、 【css】 /* メインメニュー */ #menu ul { display:block; list-style-type: none; margin:0; padding:0; } /* サブメニュー1段目 */ #menu ul ul{ display:none; position:absolute; top:100%; left:0; } /* サブメニュー2段目以降 */ #menu ul ul ul { top:0; left:100%; } /* リスト */ #menu li { float:left; } #menu li li { clear:both; } #menu li:hover { position:relative; } #menu li:hover > ul { display: block; } 【html】 <body> <div id="menu"> <ul> <li><a href="#">menu1</a> <ul> <li><a href="#">submenu1</a></li> <li><a href="#">submenu2</a></li> <li><a href="#">submenu3</a> <ul> <li><a href="#">submenu3-1</a></li> <li><a href="#">submenu3-2</a></li> <li><a href="#">submenu3-3</a></li> </ul> </li> </ul> </li> <li><a href="#">menu2</a> <ul> <li><a href="#">submenu4</a></li> <li><a href="#">submenu5</a></li> </ul> </li> <li><a href="#">menu3</a> <ul> <li><a href="#">submenu6</a></li> <li><a href="#">submenu7</a></li> <li><a href="#">submenu8</a></li> <li><a href="#">submenu9</a></li> </ul> </li> </ul> </div> </body> メニューにカーソルをもってきても、 サブメニューが表示されません。 原因や回避方法を教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • プルダウン時の最上部メニューの画像置換について

    お世話になります。サイト製作初心者のpeace193と申します。 以下のサイトを参考に自分なりにカスタマイズしました。本来はテキストであるタグ最上部のli内はクラスで画像に変え、ホバー時にCSSで個々に他の画像に置き換わるようにしました。 http://www.leigeber.com/2008/11/drop-down-menu/ そこで質問なのですが、プルダウンした時に、最上部のメニューを個別にホバーした時の画像のままにしたいのですが、このサンプルを生かす場合、どのようなCSS、またはjavascriptが必要でしょうか?(例えば、menu02-01-01やmenu03-01にホバーしたとき、それぞれmenu02のホバー画像を維持、menu03のホバー画像を維持。) 参考サイト上では ul.menu .menulink:hover, ul.menu .menuhover {background: url(/images/header_over.gif)} で変えているようですが、私はメニュー毎に置き換わる画像を変えたいのです。 お忙しいところ恐縮ですが、ご教示いただけると幸いです。 <ul class="menu" id="menu"> <li><a href="#" class="menu01"></a></li> <li><a href="#" class="menu02"></a> <ul> <li><a href="#" class="sub">menu02-01</a> <ul> <li><a href="#">menu02-01-01</a></li> <li><a href="#">menu02-01-02</a></li> </ul> <li><a href="#">menu02-02</a></li> <li><a href="#">menu02-03</a></li> </ul> </li> <li><a href="#" class="menu03"></a> <ul> <li><a href="#">menu03-01</a></li> <li><a href="#">menu03-02</a></li> <li><a href="#">menu03-03</a></li> </ul> </li> <li><a href="#" class="menu04"></a></li> </ul>

  • cssとjavascriptでプルダウンメニュー

    お世話になります。 いろいろとサンプルを試し、ハマっています・・・。どなたか助けてください! 今下記のようなソースでメニューを作っています。 <ul id="globalnavi"> <li id="a"><a href="#">a</a></li> <li id="b"><a href="#">b</a> <ul id="subnav"> <li><a href="#">b-1</a></li> <li><a href="#">b-2</a></li> <li><a href="#">b-3</a></li> </ul> </li> <li id="c"><a href="#">c</a></li> </ul> このソースで、親階層のメニューは画像、submenuはテキストで表現したいのですが、FFやIE7、IE6、safariに使える方法でなにか簡単なものありましたら、教えていただきたいです。 よろしくお願い致します!

  • jqueryでのプルダウンメニューについて

    jqueryでのプルダウンメニューについて こんにちは。 現在私はWEBサイトを製作中です。 メインメニューにプルダウンをつけたいのですが、うまくいきません。 メニューはロールオーバーでの表示(CSSでやってます)です。 slideDownを使用しているのですが、 マウスオーバー時にslidDownで表示された、 サブメニューの背景が、上の要素の背景になってしまいます。 つまり、下のコードでいくとid="sub"の背景がそのまま clas="sub"の"li"要素の背景になってしまうということです。 何か対策はありますでしょうか? html <div id="head"> <ul id="globalnavi"> <li id="gh"><a href=".">メニュー</a> <ul class="sub"> <li><a href="">サブメニュー</a></li> </ul> </li> </ul> </div> <div id="main"> </div> jquery $(function(){ $("ul.sub").hide(); $("ul#globalnavi>li").hover(function(){ $("ul:not(:animated)", this).slideDown();}, function(){$("ul.sub",this).slideUp();}); }); CSS #globalnavi a{ background-image : url(../img/navi.png); background-repeat : no-repeat; display : block; width : 160px; height : 36px; color : #333333; text-decoration : none; line-height : 36px; } #header #globalnavi li { list-style-type : none; float : left; width : 160px; position : relativ; } #header #globalnavi { clear : both; width : 960px; line-height : 36px; overflow : hidden; position : relative; text-align : center; display : block; } ul,li{ margin:0; padding:0; } .sub li{ float : none; background-color : #FFF; } #gh a{ background-position :0 0; } #gh a:hover{ background-position :0 -36px; } ロールオーバー自体はうまくいっています。 他にプルダウンの方法あるよ、などありましたら教えてください。 よろしくお願いします。

  • html,cssプルダウンメニューについて教えてください。

    html,cssプルダウンメニューについて教えてください。 現在html,cssのみでプルダウンメニューを作成しているのです、解決のできない問題点が あり困っています。どなたか知識のある方、教えていただけると嬉しいです。 [問題点] オンマウスでプルダウンメニュー表示時、その表示分だけ、親要素の<div>の 高さが広がってしまい、それに伴いそれ以下のページ内要素全て下にずれてきます。 (分かりにく表現で申し訳ありません) 出来れば、プルダウンメニューが表示されても、親要素の高さは変わらず、以下のタグ要素の 上に重なって表示させたいと思っています。 対処法がお分かりになる方、教えて頂けると幸いです。 [html] <div id="main_menu"> <div id="navi"> <ul> <li class="navi_menu" onmouseover="this.className='navi_menu_on'" onmouseout="this.className='navi_menu'"> <a href="#"><IMG src="img/main_menu04.gif"></a> <ul class="sub"> <li><a href="#">サブメニュー 1</a></li> <li><a href="#">サブメニュー 2</a></li> </ul> </li> <li class="navi_menu1" onmouseover="this.className='navi_menu_on'" onmouseout="this.className='navi_menu'"> <a href="#"><IMG src="img/main_menu05.gif"></a> <ul class="sub"> <li class="navi_menu1"><a href="#">サブメニュー 1</a></li> <li class="navi_menu1"><a href="#">サブメニュー 2</a></li> </ul> </li> </ul> </div> </div> [css] #navi { width:993; margin:0 auto; border:0px solid red; padding:0px 39px 0px 0px; } #navi ul { margin: 0; padding: 0; list-style: none; } #navi li { float: left; margin: 0; width:120px; } #navi li.navi_menu1{ float: left; margin: 0; width:140px; } #navi li a { font-size: 14px; color: #ffffff; display: block; width: 100%; padding: 0px 0; text-align: center; font-weight: bold; text-decoration: none; background-color: #3399ff; } #navi li a:hover { color: #ffffff; background-color: #3366cc; } #navi ul.sub { background: #eeeeee; } #navi ul.sub li { padding:5px 0px 0px 0px; float: none; height:25; } #navi ul.sub li.navi_menu1 { float: none; height:25; width:180; } #navi ul.sub li a { color: #666666; background: none; font-size: 12px; font-weight: normal; padding:0px 0; border-top:0px solid #000099; } #navi ul.sub li a:hover { color: #ffffff; background-color: #ff9900; } #navi ul li.navi_menu ul { display: none; } #navi ul li.navi_menu_on ul { display: block; } #navi li.navi_menu{ border:0px solid #000099; } #navi li.navi_menu_on{ border:0px solid #000099;}

  • CSSのプルダウンメニュー

    menu1とmenu2の挙動について疑問があります。 添付画像をご覧ください。 menu2からsub4-1を選択している状態です。 この時、menu2の背景色が赤に戻らないのは仕様でしょうか? それとも何か間違っているのでしょうか? 背景を画像にしても同じ結果になります。 -------------------------------------------- ul#menu li{ float:left; list-style-type:none; text-align:center; } ul#menu ul li{ clear:both; } ul#menu li a,.menu1,.menu2{ display:block; width:200px; height:50px; line-height:50px; text-decoration:none; background:#ff0000; } ul#menu li a:hover,.menu1:hover,.menu2:hover{ background:#ffcc00; } ul#menu ul{ display:none; } ul#menu li:hover > ul{ display:block; position:absolute; } ul#menu ul ul{ margin:-50px 0 0 200px; } --------------------- <ul id="menu"> <li class="menu1">menu1</a> <ul> <li><a href="#">sub1</a> <ul> <li><a href="#">sub1-1</a></li> <li><a href="#">sub1-2</a></li> </ul> </li> <li><a href="#">sub2</a></li> </ul> </li> <li class="menu2">menu2</a> <ul> <li><a href="#">sub3</a></li> <li><a href="#">sub4</a> <ul> <li><a href="#">sub4-1</a></li> <li><a href="#">sub4-2</a></li> </ul> </li> </ul> </li> </ul> ------------------ お分かりになる方よろしくお願いします。

    • 締切済み
    • CSS
  • innerHTMLでドロップダウンメニューの作り方

    CSSだけで作るドロップダウンメニューのHTMLの構造って↓みたいな感じらしいんですが、 <ul id="dropmenu"> <li><a href="#">メニュー</a> <ul id="submenu"> <li><a href="#">サブメニュー</a></li> <li><a href="#">サブメニュー</a></li> <li><a href="#">サブメニュー</a></li> <li><a href="#">サブメニュー</a></li> </ul> </li> </ul> これのサブメニューを配列からinnerHTMLで生成するときに、 var links=""; site[0]={link:'http;www',title:'アマゾン'}; site[1]={link:'http;www',title:'紀伊国屋'}; site[2]={link:'http;www',title:'ヤフーオークション'}; for(var m = 0; m < site.length; m++){ links += '<li><a href=" '+site[m]['link']+' ">'+site[m]['title']+'</a></li>'; } document.getElementById("submenu").innerHTML=links; <html> <body> <ul id="dropmenu"> <li><a href="#">メニュー</a> <ul id="submenu"> </ul> </li> </ul> </body> </html> で、全く動きません。勉強中の自分には何処がオカシイのかすら分かりません。 何処がオカシイか指摘してください。または、もっとスマートに出来る方法がありましたら、ヒントだけでもご提示いただけたら幸いです。 よろしくお願いいたします。

  • CSSのみでプルダウンメニューを作りたい

    CSSのみでプルダウンメニューを作りたい こんにちは。 WEB制作は全くの素人です。 CSSのみで下記のようなプルダウンメニューを作りたいのですが、 どうにもならず困っています。 http://c-brains.jp/blog/wsg/08/06/05-155929.php 現在使用中のCSS -------------------------------------- #header-menu { height: 23px; background-color: #333333; margin: 0px; padding: 8px 0 0 15px; background: url(img/head_menu_back.gif); background-repeat: repeat-x; text-align: left; width: auto; } #header-menu ul { text-align: left; margin: 0px; padding: 0px } #header-menu li { color: #ffffff; display: inline; padding-left: 13px; padding-right: 8px; background: url(img/l_icon.gif) no-repeat; background-position: left center; } #header-menu a { color: #ffffff; text-decoration: none; } #header-menu a:hover { color: #cccccc; } ------------------------------- 現在使用中のhtml -------------------------------- <div id="header-menu"> <ul> <li><a href="index.html">HOME</a></li> <li><a href="profile1.html">会社情報</a></li> <li><a href="service1.html">サービス</a></li> <li><a href="ethic1.html">企業理念</a></li> <li><a href="contact1.html">お問合わせ</a></li> <li><a href="job1.html">採用情報</a></li> <li><a href="indexeng.html">English</a></li> </ul> </div> ------------------------------------------------ 上記の各項目に追記しプルダウン式のリストにしたいです。 (カーソルを上にのせるとリストが開っく感じのものを希望します。) 恐れ入りますが、どなたかご教授いただきたくお願い致します。