🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
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回答

7755閲覧

jqueryのfadeIn()、fadeOut()が効かない

GenkiSugiyama

総合スコア86

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クリップ

投稿2019/09/24 07:08

【実現したいこと】
サイトのグローバルメニューをレスポンシブ対応時にハンバーガーメニューの内部に配置し、ボタンクリックでグローバルメニュー要素はslideDownで表示、暗幕要素はfadeInで表示させたい。

【問題点】
グローバルメニュー要素の表示時のslideDownと非表示時のslideUpは動作するが、暗幕部分のfadeIn、fadeOutが動作していない

【該当部分のソース】

読み込んでいるjqueryのバージョンは「 1.11.3 」です

HTML

1<!-- SP用のモーダルグローバルメニュー --> 2<div class="spItem overlayMenu"> 3 <div class="overlayMenuInner"> 4 // overlayMenuInner内にグローバルメニューの要素を記述しています 5 </div> 6 <div class="space"></div> //暗幕部分です 7</div>

CSS

1.overlayMenu { 2 position: fixed; 3 top: 0; 4 left: 0; 5 width: 100%; 6 content: ''; 7 overflow: auto; 8 background-color: rgba(0, 0, 0, 0.5); 9 z-index: 100000; 10 } 11 12 .overlayMenuInner { 13 display: none; 14 background-color: #FFFFFF; 15 } 16 17.overlayMenu .space { 18 display: none; 19 height: 100vh; 20 }

JavaScript

1let $overlay = $('.overlayMenu'); 2let $inner = $('.overlayMenuInner'); 3let $space = $('.space'); 4let openClass = 'open'; 5// ボタンでモーダル表示・非表示 6$(function(){ 7 $('.button').on('click', function(){ 8 $('.overlay-close').addClass('close'); 9 $inner.css('display', 'none'); 10 11 $('body').css('overflow', 'hidden'); 12 13 $inner.slideDown('100'); 14 $space.hide(); 15 $space.fadeIn(200); 16 }); 17}); 18$(function(){ 19 $('.overlay-close').on('click', function(){ 20 21 $('.overlay-close').delay('100').queue(function(){ 22 $(this).removeClass('close'); 23 }); 24 25 $('body').css('overflow', 'auto'); 26 27 $inner.slideUp('100'); 28 $space.fadeOut(); 29 }); 30}); 31// モーダル上の要素外をクリックでモーダル非表示 32$($space).on('click', function(){ 33 $('.overlay-close').delay('100').queue(function(){ 34 $(this).removeClass('close'); 35 }); 36 37 $('body').css('overflow', 'auto'); 38 39 $inner.slideUp('100'); 40 console.log($space); 41 $space.fadeOut(); 42});

情報が不足している場合はご指摘いただけますと幸いです。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

自己解決

CSSで暗幕要素ではなく、その親要素である「 overlayMenu 」に対して暗幕色である「 background-color: rgba(0, 0, 0, 0.5); 」の指定をしていた影響でfadeIn(),fadeOut()の挙動が確認できなかっただけでした、、

親要素から暗幕要素へ背景色指定を変更し再度確認するとfadeIn(),fadeOut()の挙動が確認できました。

また、fadeIn(),fadeOut()だと動きがちょっとぎこちなかったのでJSではクラスの付け外しのみ指示して実際の動きはCSSのopacityの指定で調整することにしました。

【最終的なソース】

JavaScript

1let $inner = $('.overlayMenuInner'); 2let $space = $('.space'); 3let openClass = 'open'; 4// ボタンでモーダル表示・非表示 5$(function(){ 6 $('.button').on('click', function(){ 7 8 $('.overlay-close').addClass('close'); 9 $inner.css('display', 'none'); 10 $('body').css('overflow', 'hidden'); 11 $inner.slideDown('200'); 12 $space.addClass('isShow'); 13 }); 14}); 15$(function(){ 16 $('.overlay-close').on('click', function(){ 17 $('.overlay-close').delay('100').queue(function(){ 18 $(this).removeClass('close'); 19 }); 20 $('body').css('overflow', 'auto'); 21 $inner.slideUp('200'); 22 $space.removeClass('isShow'); 23 }); 24}); 25// モーダル上の要素外をクリックでモーダル非表示 26$($space).on('click', function(){ 27 $('.overlay-close').delay('100').queue(function(){ 28 $(this).removeClass('close'); 29 }); 30 $('body').css('overflow', 'auto'); 31 $inner.slideUp('200'); 32 $space.removeClass('isShow'); 33});

CSS

1.overlayMenu { 2 position: fixed; 3 top: 0; 4 left: 0; 5 width: 100%; 6 content: ''; 7 overflow: auto; 8 /* background-color: rgba(0, 0, 0, 0.5); */ 9 z-index: 100000; 10 } 11 12.overlayMenu .space { 13 /* display: none; */ 14 opacity: 0; 15 transition: opacity 200ms; 16 width: 100%; 17 height: 0; 18 background-color: rgba(0, 0, 0, 0.5); 19 transition: opacity 200ms ease-out, height 0ms ease-out 300ms; 20 } 21 22 .overlayMenu .space.isShow { 23 opacity: 1; 24 height: 100vh; 25 transition: opacity 200ms ease-out; 26 }

投稿2019/09/24 08:07

GenkiSugiyama

総合スコア86

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問