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

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

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

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

jQuery

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

HTML

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

Q&A

解決済

2回答

3422閲覧

レスポンシブで画像切替ができないです

cotton88

総合スコア87

JavaScript

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

jQuery

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

HTML

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

0グッド

1クリップ

投稿2015/02/26 08:56

編集2015/02/26 10:03

スマホ表示からPC表示になった際に、画像がスマホ版の画像(top01_sp.jpg)のまま、引き伸ばされた状態になって困っています。

スマホ閲覧時に「PCサイトを見る」ボタンでviewportを書き換えてスマホ画面でPCサイトのレイアウトを表示するようにしています。
また、画像ファイル名の後ろの「_sp.jpg」から「_pc.jpg」に変えることでスマホ閲覧時用の画像とPC版の画像とを切り替えています。

左がパソコン版、右がスマホ版の画像
![左がパソコン版、右がスマホ版]WIDTH:600

パソコン版の正しい見え方
![パソコン版の正しい見え方]WIDTH:600

スマホ版からパソコン版にしたあと
![スマホ版からパソコン版にしたあと]WIDTH:600

デフォルトのviewportなど

lang

1<meta name="viewport" content="width=device-width, initial-scale=1.0"> 2<script src="js/common/vendor/jquery-1.11.2.min.js"></script> 3<script src="js/common/jquery.cookie.js"></script>

ウィンドウサイズの変化によって変わる画像

lang

1<a href="/"><img src="img/top01_pc.jpg" width="300" height="100" class="imgChange" alt="" /></a>

トリガーのボタン

lang

1<div class="switchViewportBtn pcNone"><a href="javascript:void(0)" id="btnPC">PCサイトを見る</a></div>

lang

1var wid = $(window).width(); 2var sp_windowWidth = 767; 3 4$("head").append("<meta name='viewport' content=" 5 +($.cookie("switchScreen") == 1 ? 6 "'width=1024'" : 7 "'width=device-width, initial-scale=1.0, user-scalable=yes, minimum-scale=1.0, maximum-scale=1.0'") +">"); 8 $(function() { 9 $("#btnPC").click(function() { 10 $.cookie("switchScreen", $(this).attr("id") == "btnPC" ? 1 : 0); 11 location.reload(); 12 return false; 13 }); 14 });

lang

1if( wid < sp_windowWidth ){ 2 $('.imgChange').each(function() { 3 $(this).attr("src",$(this).attr("src").replace('_pc', '_sp')); 4 }); 5};

猫に罪はありません。
よろしくお願いいたします。

==================================================================
追記しました。

ご回答有難うございます。
私の説明が下手で伝わりづらかったようで申し訳ございません!

まず、スマホでの正しい表示は、こうなります。
![イメージ説明]WIDTH:300
その時のHTMLは、

lang

1<a href="/"><img src="img/top01_sp.jpg" width="300" height="100" class="imgChange" alt="" /></a>

lang

1@media only screen and (max-width: 767px) { 2.imgChange { 3 width: 150px; 4 height: auto; 5} 6}

lang

1var wid = $(window).width(); 2var sp_windowWidth = 767; 3if( wid < sp_windowWidth ){ 4 $('.imgChange').each(function() { 5 $(this).attr("src",$(this).attr("src").replace('_pc', '_sp')); 6 }); 7};

にして、対応しています。
この段階では問題ないのですが、

lang

1<div class="switchViewportBtn pcNone"><a href="javascript:void(0)" id="btnPC">PCサイトを見る</a></div>

lang

1$("head").append("<meta name='viewport' content=" 2 +($.cookie("switchScreen") == 1 ? 3 "'width=1024'" : 4 "'width=device-width, initial-scale=1.0, user-scalable=yes, minimum-scale=1.0, maximum-scale=1.0'") +">"); 5 $(function() { 6 $("#btnPC").click(function() { 7 $.cookie("switchScreen", $(this).attr("id") == "btnPC" ? 1 : 0); 8 location.reload(); 9 return false; 10 }); 11 });

を#btnPCのボタンをクリックして、PC表示にします。
そして、さっきの画像をみると、

lang

1<a href="/"><img src="img/top01_sp.jpg" width="300" height="100" class="imgChange" alt="" /></a>

lang

1@media only screen and (min-width: 767px) { 2.imgChange { 3 width: 300px; 4 height: 100px; 5} 6}

※「top01_sp.jpg」は、横150px縦100px
※便宜上、上記CSSを書きました。本当は書いていません。

そのため、画像がビヨーンと引き伸ばされた状態になってしまいます。
![イメージ説明]WIDTH:600

ここで

lang

1<a href="/"><img src="img/top01_pc.jpg" width="300" height="100" class="imgChange" alt="" /></a>

にしたいのです!!

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

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

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

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

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

guest

回答2

0

ベストアンサー

ですね。猫に罪はないですよね、犬の方がかわいいけど。

動作確認してないですが、

lang

1if( wid < sp_windowWidth ){ 2 $('.imgChange').each(function() { 3 $(this).attr("src",$(this).attr("src").replace('_pc', '_sp')); 4 }); 5};

これを、

lang

1if( ( wid < sp_windowWidth ) && ( $.cookie("switchScreen") != 1 ) ){ 2 $('.imgChange').each(function() { 3 $(this).attr("src",$(this).attr("src").replace('_pc', '_sp')); 4 }); 5};

にしてみるとどうなりますか?

投稿2015/02/26 10:07

Lhankor_Mhy

総合スコア35869

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

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

cotton88

2015/02/26 11:21

これからは御犬様と呼ばせて頂きます!ありがとうございます。
guest

0

ちょっと詳しくないので見たまま書きます。

lang

1<a href="/"><img src="img/top01_pc.jpg" width="300" height="100" class="imgChange" alt="" /></a>

とHTMLの所にありますが、ここに画像(src="img/top01_pc.jpg")を300,100の大きさ(width="300" height="100")で表示するとあります。ここを最初から_spと書いても300,100なので引き延ばされます。
つまりこれが引き延ばされている原因なのでこの数値も変更する必要があります。サイズは見た目150,100位かな
数値を変更できない場合widthとheightを書かなければ画像そのままのサイズで表示される筈ですが、読み込みが少し遅くなるとの事です。

投稿2015/02/26 09:26

kmiura

総合スコア16

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

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

cotton88

2015/02/26 11:22

ご回答ありがとうございました!何か機会がございましたらよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問