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

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

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

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

レスポンシブWebデザイン

レスポンシブWebデザイン(RWD)は、スクリーンのサイズ、プラットフォーム、オリエンテーションに基づいて様々なデバイスで最適のサイトを生成するのウェブデザインとその開発のアプローチ方法を呼びます。

jQuery

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

HTML

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

Q&A

解決済

1回答

1074閲覧

【HTML/JavaScript】画面サイズによってJavaScriptの処理を制御してレスポンシブな処理を実現したい

otdsh9432

総合スコア55

JavaScript

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

レスポンシブWebデザイン

レスポンシブWebデザイン(RWD)は、スクリーンのサイズ、プラットフォーム、オリエンテーションに基づいて様々なデバイスで最適のサイトを生成するのウェブデザインとその開発のアプローチ方法を呼びます。

jQuery

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

HTML

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

0グッド

0クリップ

投稿2020/05/05 08:38

編集2020/05/06 02:35

【実現したいこと】
AirbnbのWebサイトの模写を行っています。
あるリンクをクリックしたときの動作として、以下2通りの動作を実現したいと考えています。

①ウィンドウサイズ747px以下のとき: リンクをクリックすると、説明文がスライドアップして表示される。
②ウィンドウサイズ747pxより大きいとき: リンクをクリックすると、説明文がモーダルウィンドウで表示される。

【現状とエラー内容】
スライドアップはjQuery使用、モーダルウィンドウはBootstrap使用すれば可能と考え、実装しました。しかし、上記①の場合に、スライドアップが動作せず、どの場合もモーダルウィンドウが動作してしまいます。
画面サイズによって、JavaScriptの処理が分岐できるようにしたいです。(モーダルウィンドウが動作する場合と、スライドアップが動作する場合)
そもそも、レスポンシブ対応のためには別の書き方にすべき場合は、その点もご教示いただけますと幸いです。

【考えられる原因】
デバッグで原因究明中です。
Javascriptで、ウィンドウサイズが変わったときの動作を記述しており、
その箇所が上手く動作していないのではと今のところは推測しています。

【画面側】

html

1<div class="slide-open-button"> 2  <!-- クリックするリンク start --> 3 <div class="s-o-b">Airbnbホストになれるのはどんな人?</div> 4  <!-- クリックするリンク end --> 5  <!-- slideinする説明文 start --> 6 <div class="slidein"> 7 <div class="close-button"><i class="fas fa-times"></i></div> 8 <h2 class="text-b">Airbnbホストになれるのはどんな人?</h2> 9 <p class="text-a">一部の地域を除き、Airbnbでホスティングを始めるのはとても簡単です。リスティングの作成および掲載もすべて無料。 マンションやアパート、一軒家のまるまる貸切から個室、ツリーハウス、お城などはAirbnbで掲載している宿泊先タイプのほんの一例でしかありません。</p> 10 <p class="text-a">ホストに求められる詳しい条件は、安全、セキュリティ、信頼性に関するAirbnbコミュニティの基準、高評価レビュー獲得のポイントをまとめたホスピタリティの基準をチェックしてみましょう。</p> 11 </div> 12  <!-- slideinする説明文 end --> 13 14 <!-- モーダルウィンドウ start--> 15 <div class="modal fade" id="modal1" tabindex="-1" role="dialog" aria-labelledby="label1" aria-hidden="true"> 16 <div class="modal-dialog" role="document"> 17 <div class="modal-content"> 18 <div class="modal-header"> 19 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 20 <span aria-hidden="true">&times;</span> 21 </button> 22 </div> 23 <div class="modal-body"> 24 Modal body 25 </div> 26 </div> 27 </div> 28 </div> 29 <!-- モーダルウィンドウ end--> 30 31

javascript

1$(window).on('load resize', function() { 2 var winW = $(window).width(); 3 var devW = 747; 4 5 if (winW <= devW) { 6 // 画面サイズがタブレットサイズ以下の時 7 $(document).on('click', '.s-o-b', function(){ 8 $(this).next('div').slideDown(); 9 }); 10 11 $(document).on('click', '.close-button', function(){ 12 $(this).parent('.slidein').slideUp(); 13 }); 14 } else { 15 // 画面サイズがタブレットサイズより大きい時 16 // s-o-bクラス(クリックするリンク)に、「data-toggle="modal" data-target="#modal1"」の属性を追加し、 17    // クリックするとモーダルウィンドウが動作するようにする 18 $('.s-o-b').attr({ 19 'data-toggle' : 'modal', 20 'data-target' : '#modal1' 21 }); 22 } 23}); 24

【画面イメージ】
画面イメージ

模写対象サイト:
https://www.airbnb.jp/host/homes?_set_bev_on_new_domain=1579409586_NDhhOTlmMzQ2MWU5

【バージョン】
jQuery 3.5.0

不足情報等ございましたらお手数をおかけしますが、ご教示いただけますと幸いです。
何卒宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

以下のようにすることで質問者さんの実現したい動作が行えると思います (動作確認用リンク)。

HTML

1<div class="slide-open-button"> 2 <!-- クリックするリンク start --> 3 <div class="s-o-b">Airbnbホストになれるのはどんな人?</div> 4 <!-- クリックするリンク end --> 5 <!-- slideinする説明文 start --> 6 <div class="slidein"> 7 <div class="close-button"><i class="fas fa-times"></i></div> 8 <h2 class="text-b">Airbnbホストになれるのはどんな人?</h2> 9 <p class="text-a">一部の地域を除き、Airbnbでホスティングを始めるのはとても簡単です。リスティングの作成および掲載もすべて無料。 マンションやアパート、一軒家のまるまる貸切から個室、ツリーハウス、お城などはAirbnbで掲載している宿泊先タイプのほんの一例でしかありません。</p> 10 <p class="text-a">ホストに求められる詳しい条件は、安全、セキュリティ、信頼性に関するAirbnbコミュニティの基準、高評価レビュー獲得のポイントをまとめたホスピタリティの基準をチェックしてみましょう。</p> 11 </div> 12 13 <!-- slideinする説明文 end --> 14 15 <!-- モーダルウィンドウ start--> 16 <div class="modal fade" id="modal1" tabindex="-1" role="dialog" aria-labelledby="label1" aria-hidden="true"> 17 <div class="modal-dialog" role="document"> 18 <div class="modal-content"> 19 <div class="modal-header"> 20 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 21 <span aria-hidden="true">&times;</span> 22 </button> 23 </div> 24 <div class="modal-body"> 25 Modal body 26 </div> 27 </div> 28 </div> 29 </div> 30 <!-- モーダルウィンドウ end--> 31</div>

jQuery

1$(window).on('load', function() { 2 $(".s-o-b").on("click", function() { 3 var winW = $(window).width(); 4 var devW = 747; 5 6 if (winW <= devW) { 7 // 画面サイズがタブレットサイズ以下の時 8 $(this).next('div').slideDown(); 9 } else { 10 // 画面サイズがタブレットサイズより大きい時 11 // クリックするとモーダルウィンドウが動作するようにする 12 $('#modal1').modal('toggle'); 13 } 14 }); 15 $(".close-button").on("click", function() { 16 $(this).parent('.slidein').slideUp(); 17 }); 18});

投稿2020/05/06 07:03

s8_chu

総合スコア14731

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

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

otdsh9432

2020/05/08 13:52

ご回答いただきありがとうございます! 記載いただいた方法で試したところ、実現したい処理が正常動作することを確認できました!! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問