質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

3回答

1577閲覧

ハンバーガーメニューが画像の上の時だけ開かないです css html

y-sasaki

総合スコア54

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/11/06 09:58

編集2021/11/06 09:59

作ったサイト

↑のサイトを作ったのですが、スマホ時のハンバーガーメニューの挙動がおかしくて困っています。
ハンバーガーメニューがaboutの画像(about-img) とlocationの画像(location-img)の上にきたときだけ、動作しなくなります。ほかの場所では正常に動いてくれます。

なぜですか?

ヘッダーやMENUの画像の上では正常に動いたので、なにか違いがあるのかと思ったのですが、font-sizeの指定の違いくらいしかわかりませんでした。

どなたか よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

解決策はangel-sunさん、hatena19さんの回答で問題ありませんが、実態は少し違います。
※これは今後このページにたどり着いた人のために書いています。ベストアンサーは別の方で良いです。

<div id="nav-drawer"/>より上にある要素は以下の要素です。

  • <h2>LOCATION</h2>
  • <h2>ABOUT</h2>

以下の要素は<div id="nav-drawer"/>よりも下にあります。

  • <div class="about-img"/>
  • <div class="location-img"/>

これを解決するには確かに#nav-drawerに大きなz-indexを指定すれば問題ありません。

ではなぜ<h2>MENU</h2>等ではこの問題が発生していないのかですが、スタックコンテキスト(Stacking Context)という概念が原因です。

z-indexを指定することでスタックレベルが指定されますが、今回は指定されていなかったので重なりはスタックコンテキストもしくはHTML構造の順番によって設定されます。

#nav-drawerにはスタックコンテキストを生じさせるposition:fixedが指定されているため、特にそれらが指定されていない<h2>MENU</h2>等よりは上の要素になります。

<h2>LOCATION</h2>等にはスタックコンテキストを生じさせるfilter: drop-shadow()が指定されています。<h2>LOCATION</h2>はHTML構造の順番が#nav-drawerより後のため、#nav-drawerよりも上層に重なります。

そのため、LOCATION等の上ではクリックできずMENU等の上ではクリックできるという現象が発生しています。

投稿2021/11/06 11:05

編集2021/11/06 11:06
k4a

総合スコア983

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

angel-sun

2021/11/06 11:15

ベストアンサーはこちらです。
hatena19

2021/11/06 11:16

なるほど。そういうことですか。 回答ははしまたが、filter: drop-shadow() の有無で重なりが変わるのか調べたけどわかりませんでした。 k4aさんの回答で納得できました。
y-sasaki

2021/11/06 11:41

皆さん 回答ありがとうございました。
guest

0

デベロッパーツールで確認してみました。

.about-img h2filterを設定しているが原因のようですね。
これをデベロッパーツールでオフにするとハンバーガーメニューをクリックできるようになりました。

ただ、このfilterは残しておきたいですよね。そこで.about-img h2pointer-events: none;を追加してクリックを無効にしてみました。
これでハンバーガーメニューがクリックできるようになりました。

投稿2021/11/06 11:00

hatena19

総合スコア33795

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

こんばんは、天使です。

ハンバーガーメニューのある

<div id="nav-drawer"/>

が重なりとして、
aboutの画像(about-img)とlocationの画像(location-img)

<div class="about-img"/> <div class="location-img"/>

の領域の下に位置する為、

クリック等のイベントが、重なりとして上にある

<div class="about-img"/><div class="location-img"/> で止まってしまっています。

これは、background-imageを指定しているためにハンバーガーメニューの方が上にあるように見えているだけで、実際には<div class="about-img"/><div class="location-img"/>の方が上である為です。

解決策としては、ハンバーガーメニューのz-indexを<div class="about-img"/><div class="location-img"/>のz-indexよりも大きく設定すればよく、

#nav-drawer { position: fixed; right: 0; z-index: 10; }

で良いでしょう。

投稿2021/11/06 10:47

編集2021/11/06 10:50
angel-sun

総合スコア64

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問