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

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

新規登録して質問してみよう
ただいま回答率
85.48%
プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

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

CSS

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

Q&A

解決済

1回答

3656閲覧

animatedModalのCLOSEボタンはz-index位置関係の呪縛を乗り越えられるか?

hatoQ

総合スコア45

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

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

CSS

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

0グッド

0クリップ

投稿2016/08/06 14:27

編集2016/08/06 15:17

###前提・実現したいこと
animatedModalというプラグインを使用して、
スマホサイトのドロワーメニューを作成しています。
CLOSEボタンを2ヵ所設置しているのですが、
(おそらく)z-indexの位置関係のせいで、機能しません。
どなたか解決できるのかも含めて、解決策をお教えいただければと思います。
よろしくお願いします。

20160806 23:47 CSS追記しました。よろしくお願いします!
20160807 00:00 たびたび申し訳ありません。ソースコード修正しました。

###発生している問題・エラーメッセージ
z-index:99999の要素(ナビ)の下からz-index:9999のドロワーメニューがにゅるっと出てくる。
このとき、ナビの右上のハンバーガーメニューアイコン(ドロワーメニューを開けるトリガー)を
閉じるボタンとも兼任させたいのだが、、、
###該当のソースコード

HTML

1/*HTML*/ 2<header> 3 <div id="header_sp"> 4 <nav> 5 <ul id="navMenu"> 6 <li><a>hoge</a></li> 7 <li><a>hoge</a></li> 8 <li><a>hoge</a></li> 9 <li><a>hoge</a></li> 10 <li><a id="menuTrigger" class="menu-trigger" href="#openMenu">MENU</a></li>★A 11 </ul> 12 </nav> 13 </div> 14 15 <div id="openMenu"> 16 <span class="close-openMenu close01"></span>★B 17 <ul> 18 <li><a>hoga</a></li> 19 <li><a>hoga</a></li> 20 <li><a>hoga</a></li> 21 <li><a class="close-openMenu close02">× CLOSE</a></li>★C 22 </ul> 23 </div> 24</header>

JavaScript

1/*jQuery*/ 2//メニューボタン 3$(function(){ 4 $('.menu-trigger').on('click', function() { 5 $(this).toggleClass('active').toggleClass('close-openMenu'); 6 return false; 7 }); 8}); 9//モーダルウィンドウ設定 -- animatedModal.js 10$(function() { 11 $('#menuTrigger').animatedModal ({ 12 modalTarget: 'openMenu', 13 animatedIn: 'fadeInDown', 14 animatedOut: 'fadeOutUp', 15 animationDuration: '1s', 16 color: '#ffffff', 17 }); 18});

CSS

1/*CSS*/ 2header { z-index: 100;} 3#header_sp { width: 100%; text-align: center; border-top: 10px solid #e4b138;} 4nav { position: relative; top: 0; width: 100%; background: #fff; z-index: 99999;} 5#navMenu { width: 100%; overflow: hidden; background: #fff;} 6#navMenu li { width: calc(100% / 5); float: left; border-right: 1px solid #997726; border-bottom: 1px solid #997726;} 7#navMenu li a { display: block;} 8/*.menu-triggerは省きます。三本線のハンバーガーがクリックでバッテンにanimateするボタンです。*/ 9#openMenu {} 10#openMenu .close01 { display: block; width: 30px; height: 30px; position: fixed; top: 30px; right: 20px; z-index: 99999;} 11#openMenu ul { width: 100%;} 12#openMenu ul li { width: 100%; height: 45px; line-height: 45px; text-align: center; border-bottom: 1px solid #333;} 13#openMenu ul li a { disblay: block;}

###試したこと
★Aにクリックでclose-openMenuクラスを付けてみた。
→そもそもドロワーメニューの外の要素だから干渉できないと思われる。
★BはAとサイズと位置を合わせてz-index:99999で設置してみた。
→そもそもナビの方がドロワーメニューよりも上に位置するのでBはAの上に重なりようがない。
★Cは普通に機能する。
→BないしAは、Cのようになりたい。。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

kei344

2016/08/06 14:29

CSSも追記ください。また、コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「</>」ボタンを押すとコードブロックになります。
kei344

2016/08/06 14:52

コードブロック内はインデントが効くので、タブ文字か半角空白でインデントしてください。また、HTML/CSS/JavaScriptはそれぞれコードブロック化されたほうが読みやすいと思います。先頭のバッククオートに続いて ```HTML、```CSS、```JavaScriptとすると、コードハイライトが適切にかかると思います。
kei344

2016/08/06 15:17 編集

「#menuTrigger」にあたる要素が有りません。どこにありますか? 作成されているサイトのURLを掲載されれば、回答しやすいとは思います。
hatoQ

2016/08/06 15:19

★Aの<a>タグにidがついています。忘れていました。すみませんが公開できないので、部分的に抜粋しています。
guest

回答1

0

ベストアンサー

まず指摘があります。「★」を使っている箇所がHTMLの構文として不正です。
「★B」は問題ありませんが、「<span class="close-openMenu close01">★B</span>」としなければ望まれる挙動(クリックして反応させる)になりえません。

【ul 要素 - HTML | MDN】
https://developer.mozilla.org/ja/docs/Web/HTML/Element/ul

許可された内容 0 個以上の <li> 要素。


ひとつの要素に相反する違うイベントを起こすのはプラグイン設計段階から予定していたならともかく後から変更するのは難しいです。

なので、メニュー部分に閉じるボタンをおいておくことで、望まれるような挙動に近いことは出来るのではないでしょうか。

JavaScript

1$( function() { 2 //メニューボタン 3 $( '.menu-trigger' ).on( 'click', function() { 4 if ( !$( '.openMenu-on' ).length ) { 5 $( this ).parent().addClass( 'on-flag' ); 6 } 7 return false; 8 } ); 9 $( '#menuCloser' ).on( 'click', function() { 10 if ( $( '.openMenu-on' ).length ) { 11 $( this ).parent().removeClass( 'on-flag' ); 12 } 13 return false; 14 } ); 15 //モーダルウィンドウ設定 -- animatedModal.js 16 $('#menuTrigger').animatedModal({ 17 modalTarget: 'openMenu' 18 , animatedIn: 'fadeInDown' 19 , animatedOut: 'fadeOutUp' 20 , animationDuration: '1s' 21 , color: '#ffffff' 22 } ); 23} );

CSS

1/* 追加分 */ 2#menuCloser, 3.on-flag #menuTrigger { 4 display: none; 5} 6#menuTrigger, 7.on-flag #menuCloser { 8 display: block; 9}

HTML

1<li><a id="menuTrigger" class="menu-trigger" href="#openMenu">MENU</a><span id="menuCloser" class="close-openMenu" href="#openMenu">CLOSE</span></li> 2```**動くサンプル:**[https://jsfiddle.net/0wdeod6d/](https://jsfiddle.net/0wdeod6d/)

投稿2016/08/06 16:21

kei344

総合スコア69407

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

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

hatoQ

2016/08/07 03:43

ありがとうございます!ばっちり動きました!! ★はソースコードではなく、説明のために書き込んだのですが、わかりにくかったですね。次回からはコメントアウトで囲むようにします。 これは結局、ドロワーメニュー要素の外にCLOSEボタンがあっても機能するということですよね? OPENとCLOSEを兼ねた一つの要素での実現は難しいので、同位置に別要素をそれぞれ用意してやって出しわけを切り替えたと。 本当にありがとうございました!
kei344

2016/08/07 04:49

> ★はソースコードではなく、説明のために書き込んだのですが、 意図はなんとなくわかるのですが、提示されたコードがそのまま動くほうが回答者も検証がしやすいので、他でされている質問も編集してみてはいかがでしょう。 ともあれ動いたようで良かったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問