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

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

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

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

Q&A

解決済

2回答

3587閲覧

ドロワーメニューのように表示されるモーダル

miyanoko

総合スコア14

jQuery

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

0グッド

0クリップ

投稿2016/06/21 08:52

編集2016/06/21 09:15

ドロワーメニューのように、右側からスライドインで表示されるモーダルを作っています。
ひとまずモーダルを表示させるところまでは出来たのですが、右側からのスライドインがどうしても上手くいかず…。ご教授いただけると嬉しいです。
画面外にあったものをスライドのアニメーションで表示させるような想定です。

<a class="ModalOpen" data-target="modal-content-01"><img src="/img/.png" alt=""></a> <section id="modal-content-01" class="modal-content"> <a class="ModalClose"><img src="/img/.png" alt="閉じるボタン"></a> <p>モーダルの中身</p> </section>
.modal-content { width: 100%; height: 100%; display: none; position: fixed; top: 0; right: -100%; padding-top: 10%; padding-bottom: 10%; padding-left: 7%; padding-right: 7%; z-index: 999; overflow: auto; } .lock{ overflow: hidden; } .SlideIn { display: block; right: 0; }
$('.ModalOpen').click(function(){ // bodyを固定(overflow:hiddenにする) $('body').addClass('lock'); // モーダルコンテンツのIDを取得 var modal = '#' + $(this).attr('data-target'); // モーダルコンテンツスライドイン $(modal).addClass('SlideIn'); }); $('.ModalClose').off().click(function(){ $(modal).removeClass('SlideIn'); $('body').removeClass('lock'); //モーダルコンテンツを囲む要素を削除 }); //リサイズしたら表示位置を再取得 $(window).on('resize', function(){ modalResize(); });

「.SlideIn」でモーダル要素になる「.modal-content」をスライド表示させるようにしたいと思っています。
モーダルが表示されている際、モーダルの背景の要素を固定するために「.lock」をつけています。
また、デバイス幅100%表示の想定です。

何卒、よろしくお願い致します。

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

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

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

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

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

kei344

2016/06/21 09:09

「うまく動作しません」とはどのような状況でしょうか。出ているエラーおよび再現可能なHTMLと併せて、具体的に記述されたほうが回答を得られやすいと思います。
miyanoko

2016/06/21 09:17

申し訳ございません、質問内容に少し具体的な内容やHTMLを追加しました。
guest

回答2

0

元のソースを何も流用していませんが、参考までに。

サンプル | jsFiddle

.md(モーダル)に、どの位置から始まるかのクラスを設定しておけば、四方どこからでもスライドインできます。斜めからも可能(笑)
モーダルをクリックしたらどう出すかがわかれば、ご自身のソースに当てはめればイケるのではなかろうかと思います。

またこのサンプルでは、モーダル以外をクリックすれば閉じると言うやり方にしてあります。モーダル内で何かしらクリックが行われてもモーダルは閉じません。またモーダル内で右クリックも動作します(コンテキストメニューが開くと言うことです)。

ここらの方法はまた別のやり方もあるかと思うので、まぁどうでも良い部分です(笑)

jQueryやjavascriptでも位置を計算すれば、同じようなことができますが、cssの方が何かと簡単で修正も楽ですから、なるべくcssを利用されるのが良いのではなかろうかと思います。

つまりjQueryで言うと、css()やanimate()を利用せず、addClass(),removeClass()を利用するという感じです。jQueryのcss()は場合によっては色々と使えます。

本来のcssで言うanimationも使えると思います。transitionEndイベントを上手く使えば、.animate()と同じような事もできますし、$.deferredで連続したアニメーションを行うこともできると思います。

投稿2016/06/21 10:57

hidekichi

総合スコア366

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

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

0

ベストアンサー

動くサンプル:https://jsfiddle.net/6svrnyz8/1/
jsは var modal; の位置の問題がありました。多分これが動かない原因です。デベロッパーツールを使うと、エラーなどが確認できるので開発時には使用したほうがよいです。

投稿2016/06/21 10:03

kei344

総合スコア69400

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問