jQuery WEB制作

jQueryでウィンドウサイズによって読み込む画像を切り替える

投稿日:

JQuery logo

サイトデザインの確認のために、
全体を一枚のJPGで書き出してサクッとブラウザで確認してもらいたい時に
ブラウザの幅を広げると大きな画像に、狭めると別に用意した小さな画像を表示させたい!

HTMLだけでは画像の差し替えは出来ないし、
CSS のbackground-imageとメディアクエリでやってみたけどうまくいかない。
長ーーーい縦スクロークがうまく表示されないのだ。 

 いつものようにググってみると、
jQueryで実現出来るらしい。

■設置手順

まずはじめに、画像を用意。
画像ファイルは末尾に_spと_pcのついた2種類を用意して、マークアップ時には_spを記述しておく。

ってことは、○○○_sp.jpgと○○○_pc.jpgの画像を用意して、
HTMLには、spの方だけ書いておくのね。

<HTMLの記述>

<img src="image_sp.png" alt="" class="js-image-switch">

 

 画像を切り替えるためのスクリプトはこれ。

$(function() { 
// 置換の対象とするclass属性。
 var $elem = $('.js-image-switch'); 
// 置換の対象とするsrc属性の末尾の文字列。 
 var sp = '_sp.'; 
 var pc = '_pc.'; 

// 画像を切り替えるウィンドウサイズ。
 var replaceWidth = 768; 

function imageSwitch() { 
// ウィンドウサイズを取得する。
 var windowWidth = parseInt($(window).width()); 

// ページ内にあるすべての`.js-image-switch`に適応される。
 $elem.each(function() {
 var $this = $(this); 
 // ウィンドウサイズが768px以上であれば_spを_pcに置換する。
 if(windowWidth >= replaceWidth) { 
 $this.attr('src', $this.attr('src').replace(sp, pc));

 // ウィンドウサイズが768px未満であれば_pcを_spに置換する。
 } else { 
 $this.attr('src', $this.attr('src').replace(pc, sp)); 
 } 
 });
 }
 imageSwitch(); 

// 動的なリサイズは操作後0.2秒経ってから処理を実行する。
 var resizeTimer;
 $(window).on('resize', function() { 
clearTimeout(resizeTimer); 
resizeTimer = setTimeout(function() {
 imageSwitch();
 }, 200); 
 }); 
});

 

このスクリプトはHTMLファイルの中の<head></head>の間に<script></script>で囲って記述。

サーバーにアップして、ページを確認するとバッチリ!!思った通りの動きです。
下記ページで公開しているスクリプトを使わせていただきました。
解説もくわしく載っているので、とってもわかりやすかったですよ。
TAM inc.様に感謝! 

参照:http://www.tam-tam.co.jp/tipsnote/javascript/post8851.html

本サイトの内容に誤りや不正確な記述がある場合やサンプルに基づくいかなる結果も一切の責任を負いかねますので、あらかじめご了承ください。

-jQuery, WEB制作

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

超簡単!オリジナルのSVGアイコンの作り方

SVGファイルから簡単にアイコンフォントが作れるサービス、「IconMoon」は超有名ですね。 時々使っているのですが、書き出しから実装まで、いざとなると「あれ?どうだっけ。。。」って忘れてしまうこと …

CSS★span要素内のテキストを上下中央に配置する

ナビ項目の文字の後ろに「▼」をつけたのですが、そのままだと、文字よりも「▼」のほうが大きく見えてしまい、文字よりも「▼」が目立ってしまった(汗) それを解消するために「span」で「▼」だけフォントサ …

HTML共通部分を部品化して読み込ませる方法

今回はHTMLでサイトを作って欲しいとの要望。 ナビやヘッダー、フッター部分は全ページ共通なので、修正や後々のメンテナンスも考えて、それらを部品化して1箇所で管理したい。 HTMLには、他のページを読 …

CSS★テキストにグラデーションをつける

文字にグラデーションカラーをつけるといえば、イラストレーターなどで画像を用意してからサイト内に配置というのがお約束だったんだけど、CSSだけで実現できるようになりました。 先日の勉強会で習ったばかりの …

no image

コメントアウトの書き方★html & css & php

WEB制作ではhtml & css & phpを触ることが多いですが、コメントアウトの書き方がぞれぞれ違うので忘れないようにメモ。 ちなみに、コメントアウトとは、ソースコード側に書いて …

サイト制作・グラフィック制作をしているデザイナーです。制作で躓いたことの備忘録としてこのブログを始めました。
たくさんの検索結果から、実際に何度も何度も自分で試してみて、自分に合うなと思った方法やうまくいった方法をこのブログに書き留めています。
プログラム関係のことはもっぱらコピペ派。
自分でゴリゴリ書くことはできません。。。プログラムが分かる人がうらやましいです。
そんな私でもなんとかサイト制作ができるのはグーグル先生と貴重な情報をおしげもなく公開してくださっているたくさんの方々のおかげ。
有志のみなさまに日々感謝しつつ制作させていただいています。