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

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

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

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

jQuery

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

Q&A

1回答

2036閲覧

jQuery backstretchでリサイズ時に画像を切り替える方法

asako-

総合スコア21

JavaScript

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

jQuery

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

0グッド

1クリップ

投稿2019/04/25 15:46

編集2019/04/25 16:15

backstretchプラグインを使用して、以下のコードでスマホとPCで画像を切り替えています。

↓プラグイン公式サイト
http://www.jquery-backstretch.com/

jQuery

1$(function(){ 2 var windowWidth = window.innerWidth; 3 if (windowWidth >= 768) { 4 $(".home-hero").backstretch([ 5 "img/home/hero/hero1.jpg", 6 "img/home/hero/hero2.jpg", 7 "img/home/hero/hero3.jpg" 8 ], {duration: 5000, fade: 1200}); 9 } else { 10 $(".home-hero").backstretch([ 11 "img/home/hero/hero1-sp.jpg", 12 "img/home/hero/hero2-sp.jpg", 13 "img/home/hero/hero3-sp.jpg" 14 ], {duration: 5000, fade: 1200}); 15 } 16}); 17

上記記述の場合、リサイズ時には画像は切り替わりません。
リサイズ時にも画像が切り替わるようにしたく、いくつか試したのですが上手くいきませんでした。

試した記述 1

jQuery

1$(function(){ 2 $(window).on('load resize', function() { 3 var windowWidth = window.innerWidth; 4 if (windowWidth >= 768) { 5 $(".home-hero").backstretch([ 6 "img/home/hero/hero1.jpg", 7 "img/home/hero/hero2.jpg", 8 "img/home/hero/hero3.jpg" 9 ], {duration: 5000, fade: 1200}); 10 } else { 11 $(".home-hero").backstretch([ 12 "img/home/hero/hero1-sp.jpg", 13 "img/home/hero/hero2-sp.jpg", 14 "img/home/hero/hero3-sp.jpg" 15 ], {duration: 5000, fade: 1200}); 16 } 17 }); 18}); 19

試した記述 2

javascript

1document.addEventListener('DOMContentLoaded', function () { 2 $(function(){ 3 4 var mql = window.matchMedia('screen and (min-width: 768px)'); 5 6 function checkBreakPoint(mql) { 7 if (mql.matches) { 8 // PC向け 9 $(".home-hero").backstretch([ 10 "img/home/hero/hero1.jpg", 11 "img/home/hero/hero2.jpg", 12 "img/home/hero/hero3.jpg" 13 ], {duration: 5000, fade: 1200}); 14 } else { 15 // スマホ向け 16 $(".home-hero").backstretch([ 17 "img/home/hero/hero1-sp.jpg", 18 "img/home/hero/hero2-sp.jpg", 19 "img/home/hero/hero3-sp.jpg" 20 ], {duration: 5000, fade: 1200}); 21 } 22 } 23 24 mql.addListener(checkBreakPoint); 25 26 checkBreakPoint(mql); 27 }); 28}); 29

どちらも、読み込み時は正常に動作しますが、リサイズするとPC用とスマホ用の画像が混じって表示されてしまいます。
解決法はありますでしょうか?

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

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

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

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

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

kei344

2019/04/25 15:59

プラグイン/ライブラリは公式配布サイトのURLを質問文に追記ください。(URLにはリンクを張ることができます)
guest

回答1

0

切り替える前に.backstretch("destroy", preserveBackground)で解除しておかないと2重になるのでは。

【GitHub - jquery-backstretch/jquery-backstretch: Backstretch is a simple jQuery plugin that allows you to add a dynamically-resized, slideshow-capable background image to any page or element. The image will stretch to fit the page/element, and will automatically resize as the window/element size changes.】
https://github.com/jquery-backstretch/jquery-backstretch#slideshow-api

投稿2019/04/25 16:23

kei344

総合スコア69400

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

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

asako-

2019/04/25 16:52

回答ありがとうございました。 試した記述 1で $(window).on('load resize', function() { の上に、 $('.home-hero').backstretch("destroy", preserveBackground); を記述しましたが、 Uncaught ReferenceError: preserveBackground is not defined とコンソールにエラー表示があり、背景画像も表示されなくなってしまいました。 試した記述 2でも同様のエラーになってしまいました。。
kei344

2019/04/25 16:56

.backstretch("destroy") か .destroy() ではどうでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問