imageProvide.js - manabuyasuda/jquery-plugins GitHub Wiki
スクリプト
$imageProvide
に処理の対象にする要素を指定tb
とpc
にブレイクポイントを指定data-image-provide
カスタムデータ属性の指定が2つならtb
、3つならtb
とpc
でそれぞれ画像が切り替わる
// @desc - カスタムデータ属性を取得して画像ファイルを切り替えます。
// @example html
// <img src="" class="js-image-provide" data-image-provide='["assets/image/title_sp.jpg", "assets/image/title_tb.jpg", "assets/image/title_pc.jpg"]'>
$(function() {
// 処理の対象になる要素。
var $imageProvide = $('.js-image-provide');
// 画像ファイルを切り替えるウィンドウサイズ。
var tb = 768;
var pc = 1000;
function imageProvide() {
// ウィンドウサイズの取得
var windowWidth = parseInt(window.innerWidth);
// 取得するカスタムデータ属性の初期化。
var setData = {};
$imageProvide.each(function() {
var $this = $(this);
// カスタムデータ属性とその個数を取得。
$data = $this.data('image-provide');
$dataCount = $data.length;
// カスタムデータ属性が2つの場合は`tb`で切り替わる。
if($dataCount === 2) {
if(windowWidth >= tb) {
setData = $data[1];
} else {
setData = $data[0];
}
}
// カスタムデータ属性が2つの場合は`tb`と`pc`で切り替わる。
if($dataCount === 3) {
if(windowWidth >= tb && windowWidth < pc) {
setData = $data[1];
} else if(windowWidth >= pc) {
setData = $data[2];
} else {
setData = $data[0];
}
}
// 取得したカスタムデータ属性で`src`属性を書き換える。
$this.attr('src', setData);
});
}
imageProvide();
// 動的なリサイズは操作後0.2秒経ってから処理を実行する。
var resizeTimer;
$(window).on('resize', function() {
clearTimeout(resizeTimer);
resizeTimer = setTimeout(function() {
imageProvide();
}, 200);
});
});
デフォルトでは.js-image-provide
が指定されていて、カスタムデータ属性が2つなら768px、3つなら768pxと1000pxで画像が切り替わる。
カスタムデータを配列で指定するためにはシングルクオーテーションと角括弧(ブラケット)で囲み、ファイル名はダブルクオーテーションで囲む。
<img src="" class="js-image-provide" data-image-provide='["assets/image/title_sp.jpg","assets/image/title_pc.jpg"]'>
<img src="" class="js-image-provide" data-image-provide='["assets/image/title_sp.jpg", "assets/image/title_tb.jpg", "assets/image/title_pc.jpg"]'>