• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:jQueryで作ったドロワーメニューに画像が被る)

jQueryで作ったドロワーメニューに画像が被る

このQ&Aのポイント
  • トップページにjQueryを使ってドロワーメニューとカルーセルとアコーディオンメニューを作成しました。
  • それぞれは作動するのですが、ドロワーを一番上に表示させたいのにカルーセルとアコーディオンメニューが上に被ってしまいます。
  • jQueryは初心者です。

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

  • ベストアンサー
  • 4017B
  • ベストアンサー率73% (1336/1814)
回答No.2

例文のHTMLが不完全?なので確定的な事は言えませんが、この構造だと z-index を作用させたい要素(.navDrawr、.carousel、.accordion)がそれぞれに異なる階層レベルで親要素(<div>や<header>など)に囲まれているので、それらの親要素の囲み範囲を飛び越えては作用しません。 なので根本的にHTML構造を作り直すか、一旦全ての要素を大きく何らかの親要素(<div>など)で囲み、そこから子要素に1つづつ z-index を割り振って行くべきか…? とにかく z-index はCSS記述のみで簡単に弄れますが、その反面として同一親要素内に含まれる子要素のみにしか影響し合わないと言う欠点(仕様)があります。 つまり… <div class="親A"> <span>子要素-01</span> <span>子要素-02</span> <span>子要素-02</span> </div> <div class="親B"> <span>子要素-01</span> <span>子要素-02</span> <span>子要素-02</span> </div> ~上記の様なHTML構造の場合、同じ親の内部での子要素同士の <span> 重ね順序は z-index の数値調整で簡単に変更可能ですが。親Aと親Bのそれぞれの子要素の重ね合わせ順序は制御出来ません(子要素の設定は無視され、常に親要素のz-indexが最優先)。 従ってまず先に親Aと親Bの z-index を具体的に数値して優先順位を決定し、その上でさらに親要素の z-index の数値を引き継いだ上での重ね合わせ順序を考慮した上で、さらに z-index の数値を設定していく必要があります。このため親要素のz-indexを無視する様な重ね合わせ順序は子要素には反映出来ません。

kanaflan
質問者

お礼

ありがとうございました。 親要素のheaderにz-index999を入れたら出来ました。 てっきり複数のjsを使った為と諦めていたので、すごく助かりました。 本当にありがとうございました。

その他の回答 (1)

  • 4017B
  • ベストアンサー率73% (1336/1814)
回答No.1

jQueryでは無くCSSの問題ですね。「z-index:」と言う設定をして調整します。 z-indexは親要素の値を継承しつつ、それぞれの子要素の重ね合わせ順序を自由に指定出来るCSS設定です。 標準初期設定は z-index:0; になっていて、単純にHTML内での記述順に重ねて表示されていくので。それを変えたい、一番上に表示したい要素にCSSで z-index:2; みたいな記述をすれば、他の要素よりも優先的に上側に表示されます。 P.S. z-index: の値は0以上の整数なら何でもOKです。他に特に競合する要素が無いのであれば、適当に z-index:999; みたいに極端に大きな数でも構いません。

kanaflan
質問者

お礼

早々のご回答ありがとうございます。 ただ、 z-indexは試してみたのですが、 .navDrawrにz-index;999 .carousel z-index;1 .accordion z-index;2 と設定しましたが変わりませんでした。記述するところが違っているのでしょうか?

関連するQ&A