備忘。
「display:none」で切り替えたくないときに。
これならばページを開いたタイミングで全ての画像を読み込まないため、軽量化できる。
やり方
class="switch"が記述されている画像のみ切り替わります。
1 | <img src="images/text_sp.png" alt="スマホ切り替え" class="switch"> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | /*=========================================================== レスポンシブ時の画像切り替え =============================================================*/ // <img src>の[_pc]または[_sp]を判定し、ブレイクポイントに応じて画像を切り替える。 $(function () { //変数セット var $elem = $('.switch'); var sp = '_sp.'; var pc = '_pc.'; var replaceWidth = 361; //ブレイクポイント設定 function imageSwitch() { //ウィンドウサイズ取得 var windowWidth = parseInt($(window).width()); //.switchに適用 $elem.each(function () { var $this = $(this); if (windowWidth >= replaceWidth) { $this.attr('src', $this.attr('src').replace(sp, pc)); } else { $this.attr('src', $this.attr('src').replace(pc, sp)); } }); } imageSwitch(); //ディレイ設定(リサイズの実行タイミングを遅延させる) var delayStart; var delayTime = 200; //ミリSec $(window).on('resize', function () { clearTimeout(delayStart); delayStart = setTimeout(function () { imageSwitch(); }, delayTime); }); }); |
これ以外の方法
他にも以下の方法がありますが、IEや旧ブラウザに対応していないものもあります。
とくに、レガシーブラウザに対応させる場合は、いまのところjavaScriptが確実と思います。
- <img srcset="~○x">
- backbround-image:image-set
- <picture>