• 締切済み

隣接セレクタの適用範囲について。

http://9-bb.com/css%E3%81%A0%E3%81%91%E3%81%A7%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%8C%E9%96%8B%E3%81%84%E3%81%9F%E3%82%8A%E9%96%89%E3%81%98%E3%81%9F%E3%82%8A%E3%81%99%E3%82%8B%E3%82%A2%E3%82%B3%E3%83%BC/ 上記のサイトを参考に、CSSで開閉式のリストを作りました。 そのサイトのHTMLの1行目~10行目は下記の様になっています。 <div class="menu"> <label for="Panel1">ボタン1</label> <input type="checkbox" id="Panel1" class="on-off" /> <ul> <li><a href="">リンク1</a></li> <li><a href="">リンク</a></li> <li><a href="">リンク</a></li> <li><a href="">リンク</a></li> <li><a href="">リンク</a></li> </ul> それに対応したCSSは、下記の様になっています。 input[type="checkbox"].on-off + ul{ height: 0; overflow: hidden; } input[type="checkbox"].on-off:checked + ul{ height: 200px; } つまり、 <input type="checkbox" id="Panel1" class="on-off" /> の後ろの <ul>タグに働きかける構造になっています。 それを改良して、<ul>タグの部分だけでなく、幅広い範囲に働きかける構造にしたいです。 そこで、対応しているCSSの隣接セレクタ「+」の後ろの「ul」を「span」にして、HTMLも「span」タグで括りました。 input[type="checkbox"].on-off + span{ height: 0; overflow: hidden; } input[type="checkbox"].on-off:checked + span{ height: 200px; } <div class="menu"> <label for="Panel1">ボタン1</label> <input type="checkbox" id="Panel1" class="on-off" /> <span> <ul> <li><a href="">リンク1</a></li> <li><a href="">リンク</a></li> <li><a href="">リンク</a></li> <li><a href="">リンク</a></li> <li><a href="">リンク</a></li> </ul> </span> しかし、上手く動作しません。 要するに、「ボタン1」で開閉できる範囲を「リスト1」だけでなく「リスト1」「リスト2」の両方に効かせたり、「ul」タグに囲まれた範囲だけでなく、他のタグも含めた範囲にも効かせたいです。 要点を得ない質問になりましたが、アドバイスをお願いします。

  • CSS
  • 回答数3
  • ありがとう数10

みんなの回答

回答No.3

文法的に誤っているためにきちんと動作しないでしょう。 『メモ: CSSスタイルシートを意図した通りに機能させるには、正しい文書解析木が必要です。つまり、正当なHTMLを用いるべきです。( http://jigsaw.w3.org/css-validator/#validate_by_input )』  私には良く分かりませんが、ここでとても詳しい方(ORUKAさん)が回答されるはずなのですが。みのがされているのかな

  • byDesign
  • ベストアンサー率75% (45/60)
回答No.2

<span>はインライン要素なので、heightは効果がありません。 <span>の変わりに<div>(ブロック要素)に変えれば良い気がします。 なお、インライン要素の中にブロック要素を入れる事は出来ません。 <ul>はブロック要素なので、<span>の中に入れてはいけません。

prime2011
質問者

お礼

アドバイス有難うございます。 <div>は試しましたが無理でした。しかし、<ul>を使えば機能しました。 多分、<ul><ol>を<input>のすぐ下に使う時だけ機能するのかもしれません。

回答No.1

まずはタグを正しく使おう。 <span>に<ul>は入れられない。

prime2011
質問者

お礼

アドバイス有難うございます。

関連するQ&A

  • luxbarのIE表示について

    HP作成でハンバガーメニューの作成が難しく、ネットで探していたらluxbarが便利そうでした。早速作成して色々なブラウザで検証してみたのですがIEのみ表示が上手くできません非対応なのでしょうか? <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" href="https://cdn.rawgit.com/balzss/luxbar/ae5835e2/build/luxbar.min.css"> </head> <body> <div class="luxbar luxbar-static"> <input type="checkbox" id="luxbar-checkbox" class="luxbar-checkbox"> <div class="luxbar-menu luxbar-menu-right luxbar-menu-dark"> <ul class="luxbar-navigation"> <li class="luxbar-header"> <a class="luxbar-brand" href="#">Brand</a> <label class="luxbar-hamburger luxbar-hamburger-doublespin" for="luxbar-checkbox"> <span></span> </label> </li> <li class="luxbar-item active"><a href="#">Home</a></li> <li class="luxbar-item dropdown"><a href="#">Users</a> <ul> <li class="luxbar-item" ><a href="#">Max</a></li> <li class="luxbar-item" ><a href="#">Edgar</a></li> <li class="luxbar-item" ><a href="#">John</a></li> </ul> </li> </ul> </div> </div> </body>

  • luxbarの表示について2

    luxbarについて再度お聞きしたいです。 .luxbar-navigation{ justify-content: flex-start; } でIE11でもうまく表示されましたが、どのブラウザもハンバーガーメニューにした時、階層下メニューは開いたままでした。これを閉じた状態から開くように修正できないのでしょうか?また、ナビバー時の背景色は任意で好みの色に変更できないでしょうか?よろしくお願いいたします。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" href="https://cdn.rawgit.com/balzss/luxbar/ae5835e2/build/luxbar.min.css"> <style> <!-- .luxbar-navigation{ justify-content: flex-start; } --> </style> </head> <body> <div class="luxbar luxbar-static"> <input type="checkbox" id="luxbar-checkbox" class="luxbar-checkbox"> <div class="luxbar-menu luxbar-menu-right luxbar-menu-dark"> <ul class="luxbar-navigation"> <li class="luxbar-header"> <a class="luxbar-brand" href="#">Brand</a> <label class="luxbar-hamburger luxbar-hamburger-doublespin" for="luxbar-checkbox"> <span></span> </label> </li> <li class="luxbar-item active"><a href="#">Home</a></li> <li class="luxbar-item dropdown"><a href="#">Users</a> <ul> <li class="luxbar-item" ><a href="#">Max</a></li> <li class="luxbar-item" ><a href="#">Edgar</a></li> <li class="luxbar-item" ><a href="#">John</a></li> </ul> </li> </ul> </div> </div> </body>

  • input みたいなボタン

    <ul> <li class=""><a href="・・・">りんく</a></li> <li class=""><a href="・・・">にっき</a></li> <li class=""><a href="・・・">BBS</a></li> </ul> (タグはうるおぼえで正確ではないかもしれません。そのサイトもわからなくなってしまって・・) このタグを埋め込むとinputボタンみたいな中に、リンク・にっき・BBS、というふうに表示されるサイトがありました。 スタイルシートでやってるみたいですが、外部スタイルシートのためやり方が伺えません。 どのようにしたらよいかおわかりの方いらっしゃいませんでしょうか?

  • li タグ全体をリンクに。

    <ul> <li><label><input type="radio" name="" value="" ><span>text</span></label></li> <li><label><input type="radio" name="" value="" ><span>text</span></label></li> <li><label><input type="radio" name="" value="" ><span>text</span></label></li> </ul> 上記ですが、リストのどこを押してもラジオがチェックされるようCSSで実装したいと、考えています。html 5 で 最新スマフォならというところです。 どうぞよろしくおねがいいたします。

    • ベストアンサー
    • HTML
  • luxbarの表示について3

    Proof4さん回答ありがとうございます。お陰様で改善できました。 申し訳ないのですがあと数点教えてください。 1.luxbarの上部にヘッダー用のlogo画像等設置用のスペースの開けたいのですが可能でしょうか?試しに<br>でスペースを開けてみたのですが不可でした。もしもスペースが確保できた場合のスマホ用の大きさになった場合、ハンバーガーメニューは右上に表示しているのでしょうか? 2.配色を試しに#91D0CDで行ってみましたが色は変わりませんでした。 3.全てのメニューに多階層を設置したいのですが、メニュー一番初めの  <li class="luxbar-item active"><a href="#">Home</a></li>を  <li class="luxbar-item dropdown"><a href="#">Home</a></li> にすると問題があるのでしょうか? 4.https://okwave.jp/qa/q9621783.htmlにFlexboxのレシポンシブCSSで困って質問しています。かなりお詳しそうなので是非教えて頂けないでしょうか? 初心者なものですから多数質問して申し訳ないのですが宜しくお願い致します。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" href="https://cdn.rawgit.com/balzss/luxbar/ae5835e2/build/luxbar.min.css"> <style> <!-- .luxbar-navigation{ justify-content: flex-start; } .dropdown >ul{ display: none; } /******* カスタムの色設定 *******/ .luxbar-menu-custom, .luxbar-menu-custom .dropdown ul{ background-color: #91D0CD; /* 背景色 */ color: #fff; /* 文字色 */ } .luxbar-menu-custom .active, .luxbar-menu-custom .luxbar-item:hover{ background-color: #91D0CD; /* アクティブなメニューとhover時の色 */ } .luxbar-menu-custom .luxbar-hamburger span, .luxbar-menu-custom .luxbar-hamburger span::before, .luxbar-menu-custom .luxbar-hamburger span::after { background-color: #91D0CD; /* ハンバーガーメニューの色 */ } --> </style> </head> <body> <br> <br> <br> <br> <div class="luxbar luxbar-static"> <input type="checkbox" id="luxbar-checkbox" class="luxbar-checkbox"> <div class="luxbar-menu luxbar-menu-right luxbar-menu-dark"> <ul class="luxbar-navigation"> <li class="luxbar-header"> <a class="luxbar-brand" href="#">Brand</a> <label class="luxbar-hamburger luxbar-hamburger-doublespin" for="luxbar-checkbox"> <span></span> </label> </li> <li class="luxbar-item dropdown"><a href="#">Home</a> <ul> <li class="luxbar-item" ><a href="#">Max</a></li> <li class="luxbar-item" ><a href="#">Edgar</a></li> <li class="luxbar-item" ><a href="#">John</a></li> </ul> </li> <li class="luxbar-item dropdown"><a href="#">Users</a> <ul> <li class="luxbar-item" ><a href="#">Max</a></li> <li class="luxbar-item" ><a href="#">Edgar</a></li> <li class="luxbar-item" ><a href="#">John</a></li> </ul> </li> <li class="luxbar-item dropdown"><a href="#">HomeHome</a> <ul> <li class="luxbar-item" ><a href="#">MaxMaxMax</a></li> <li class="luxbar-item" ><a href="#">Edgar</a></li> <li class="luxbar-item" ><a href="#">JohnMax</a></li> </ul> </li> <li class="luxbar-item dropdown"><a href="#">HomeHomeHome</a> <ul> <li class="luxbar-item" ><a href="#">Max</a></li> <li class="luxbar-item" ><a href="#">EdgarMax</a></li> <li class="luxbar-item" ><a href="#">John</a></li> </ul> </li> </ul> </div> </div> </body> </html>

  • 大量のチェックボックス状態取得について

    質問させてください。 以下のようなHTML構造で連続している場合、 ID内全体のチェックボックスの状態を取得し、未チェックの物を非表示するにはどのようにすれば一番処理速度が速いのでしょうか? <div id="hoge1"> <ul> <li> <ul class="Parents"> <li class="child"><input type="checkbox" name="AAA"></li> <li class="child"><input type="checkbox" name="BBB"></li> <li class="child"><input type="checkbox" name="CCC"></li> <li class="child"><input type="checkbox" name="DDD"></li> </ul> </li> <li> <ul class="Parents"> <li class="child"><input type="checkbox" name="AAA"></li> <li class="child"><input type="checkbox" name="BBB"></li> <li class="child"><input type="checkbox" name="CCC"></li> <li class="child"><input type="checkbox" name="DDD"></li> </ul> </li> ~~~~~~~~~~~~    ※繰り返し ~~~~~~~~~~~~ </ul> </div> 現在はjQueryで$ (ul.Parents li.child)で全体をラップし、for文のループ内で$eq()で1件毎chekedを参照し、.hide()を行っています。 動作自体は問題ないのですが、処理速度の遅さが気になっています。 速い方法でればjQueryを使用しない方法でもかまいません。 どうかよろしくお願い致します。

  • 「+」で次に来るタグを操作するCSSの記述方法は?

    http://9-bb.com/css%E3%81%A0%E3%81%91%E3%81%A7%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%8C%E9%96%8B%E3%81%84%E3%81%9F%E3%82%8A%E9%96%89%E3%81%98%E3%81%9F%E3%82%8A%E3%81%99%E3%82%8B%E3%82%A2%E3%82%B3%E3%83%BC/ 上記のアドレスで、下記の説明がされています。 「今回は、ulの表示・非表示でアコーディオンの役目をさせていますが、divなど他のタグに変えても出来ます、+を利用して次に来るタグが対象になっています」 input[type="checkbox"].on-off:checked + ul{height: 200px;} この様に記述すれば、「inputタグ」の次に来るタグ、すなわち「ulタグ」を、「+」によって操作できると言う説明です。 それでは、「次に来るタグ以外のタグ」は操作する方法はどうするのですか? input[type="checkbox"].on-off:checked + .test ul{height: 200px;} 上記の様に記述すれば、<div class="test">~</div>を操作できますか?

    • 締切済み
    • CSS
  • jQueryスライドメニューの初歩的な質問です

    以下のスライドメニューは、それぞれブロック要素で構成されていて、リンク文字や余白をクリックするとスライドトグルで開閉が行われます(htmlファイルにコピーすれば動作すると思います)。 ひとまずイメージ通りに完成したのですが、1つ困ったことがあります。それはリンク文字をクリックしたときにトグルが実行されてしまうことです。ページ遷移する間にメニューが一度開閉してしまうので見た目にあまりスマートではありません。 それを修正するためいろいろ試行錯誤したのですが、どうやってもわからなかったので質問いたしました。リンク文字をクリックしたときは、ページ遷移のみでトグルを実行しないようにするにはどのように書けばよいのでしょうか? また、このソースはjQueryを1.7.2以上にすると動作しなくなってしまいます。この原因が分かる方がいらしたらぜひお教えください。 どうぞよろしくお願いいたします。 <!----------------------------------> <script type='text/javascript' src='http://www.google.com/jsapi'></script> <script type='text/javascript'>google.load('jquery', '1.7.1')</script> <script type='text/javascript'> <!-- $(function(){ $('span.tree_a').click(function() { $(this).next().slideToggle(); }).next().hide(); }); //--> </script> <!----------------------------------> <style type="text/css"> span.tree_a{ width: 100%; display: block; } </style> <!----------------------------------> <ul> <li><span class='tree_a'><a href='http://www.google.co.jp/'>親メニュー1</a></span> <ul> <li><span class='tree_a'><a href='http://www.google.co.jp/'>子メニュー1</a></span> <ul> <li><a href='http://www.google.co.jp/'>孫メニュー1</a></li> </ul> </li> </ul> </li> <li><span class='tree_a'><a href='http://www.google.co.jp/'>親メニュー2</a></span> <ul> <li><span class='tree_a'><a href='http://www.google.co.jp/'>子メニュー2</a></span> <ul> <li><a href='http://www.google.co.jp/'>孫メニュー2</a></li> </ul> </li> </ul> </li> </ul> <!---------------------------------->

  • IEの崩れ

    以下のようにリストタグの途中でbrを入れるとIEだけ崩れます 何かよい方法はないでしょうか? <ul> <li class="first"><span>2011</span></li><!-- --><li><a href="#">2010</a></li><!-- --><li><a href="#">2009</a></li><br /> <li class="first"><span><a href="#">2001</a></span></li><!-- --><li><a href="#">2000</a></li><!-- --><li><a href="#">1999</a></li> </ul>

    • ベストアンサー
    • CSS
  • Checkbox について

    どうしたらできるかわかりません、誰かが教えていただけません? Checkboxを選択してほかのサイトに移動してまた戻ったら選択したのが初期化状態になってしまいます(選択されてない状態に戻る) コート以下です。 <ul> <li class="active"> お見舞い(発送)<input type="checkbox"></li> <li class="active"> お見舞い(受領)<input type="checkbox"></li> </ul>

    • ベストアンサー
    • HTML

専門家に質問してみよう