/* * module.baseset.js */ /* * init定義 */ // 基本情報hash var responsive = { bp: [400, 479, 639, 767, 1099, 1280, 1500], bodyClass:["portrait", "sp", "landscape", "middle", "tablet", "base", "wide"] }; // 処理用ベースhash var rsp = new Object; var rspswitch = false /* レイアウト変更 */ /* * 機種判別 */ ua = function(){ var ua = new Object; var userAgent = window.navigator.userAgent.toLowerCase(); var appVersion = window.navigator.appVersion.toLowerCase(); ua = { // ブラウザ判別 IE:false, IE7:false, IE8:false, IE9:false, IE7to8:false, IE7to9:false, ff:false, chrome:false, // デバイス・OS判別 iPad:false, iPhone:false, iPod:false, iOS:false, Android:false, mac:false, SD:false, Tablet:false }; ua.IE = (userAgent.indexOf('msie') != -1 || userAgent.indexOf('trident') != -1); ua.IE7 = (userAgent.indexOf('msie') != -1 && appVersion.indexOf("msie 7.") != -1); ua.IE8 = (userAgent.indexOf('msie') != -1 && appVersion.indexOf("msie 8.") != -1); ua.IE9 = (userAgent.indexOf('msie') != -1 && appVersion.indexOf("msie 9.") != -1); ua.IE7to8 = (ua.IE7 || ua.IE8); ua.IE7to9 = (ua.IE7 || ua.IE8 || ua.IE9); ua.ff = userAgent.indexOf("firefox") != -1; ua.chrome = userAgent.indexOf('chrome') != -1 ua.iPad = userAgent.indexOf('ipad') != -1; ua.iPhone = userAgent.indexOf('iphone') != -1; ua.iPod = userAgent.indexOf('ipod') != -1; ua.iOS = (ua.iPhone || ua.iPad || ua.iPod); ua.Android = userAgent.indexOf('android') != -1; ua.mac = (userAgent.indexOf("macintosh") != -1); ua.SD = (ua.iPhone || ua.iPod || (ua.Android && userAgent.indexOf('mobile') != -1) || (userAgent.indexOf("windows") != -1 && userAgent.indexOf("phone") != -1) || (userAgent.indexOf("firefox") != -1 && userAgent.indexOf("mobile") != -1) || userAgent.indexOf('blackberry') != -1); ua.Tablet = (ua.iPad || ua.Android && userAgent.indexOf('mobile') == -1 || (userAgent.indexOf("windows") != -1 && userAgent.indexOf("touch") != -1) || (userAgent.indexOf("firefox") != -1 && userAgent.indexOf("tablet") != -1) || userAgent.indexOf("kindle") != -1 || userAgent.indexOf("silk") != -1 || userAgent.indexOf("playbook") != -1); return ua; }(); /* * 画面サイズ */ $(function(){     $(window).bind("load resize", function(){ size = setSize(); }); }); var size = setSize(); function setSize(){ var size = new Object; var winW = window.innerWidth; var winH = $(window).height(); if(ua.IE7to8) winW = $(window).width(); size.h = winH; size.w = winW; return size; } /* * メタ調整 */ metaSet(); // meta情報の書き換え function metaSet(){ var parentNode = document.getElementsByTagName('head')[0]; var viewport = { iphone : 'width=devise-width, initial-scale=1.0', android : 'target-densitydpi=medium-dpi,width=device-width' } meta = document.createElement('meta'); meta.setAttribute('name','viewport'); if (ua.iOS) { // meta.setAttribute('content',viewport.iphone); // parentNode.appendChild(meta); }else if (ua.Android) { meta.setAttribute('content',viewport.android); parentNode.appendChild(meta); } } (function($) { /* * ブレイクポイント設定、bodyにクラス名セット、画像切り替え */ $.fn.setBreakpoints = function(options){ var defaults = { bp: [400, 479, 639, 767, 959, 1280, 1500], bodyClass:["portrait", "sp", "landscape", "middle", "tablet", "base", "wide"] }; var init = $.extend( defaults, options ); var $body = $("body"); var bnum = 0; // 処理登録 return this.bind("load resize", function(){ statusChange(); }); // 処理 function statusChange(){ rspswitch = false; if(size.w <= init.bp[0]){ if($body.hasClass(init.bodyClass[0])) return false; bnum = 0; } else if(size.w > init.bp[0] && size.w <= init.bp[1]){ if($body.hasClass(init.bodyClass[1])) return false; bnum = 1; } else if(size.w > init.bp[1] && size.w <= init.bp[2]){ if($body.hasClass(init.bodyClass[2])) return false; bnum = 2; } else if(size.w > init.bp[2] && size.w <= init.bp[3]){ if($body.hasClass(init.bodyClass[3])) return false; bnum = 3; } else if(size.w > init.bp[3] && size.w <= init.bp[4]){ if($body.hasClass(init.bodyClass[4])) return false; bnum = 4; } else if(size.w > init.bp[3] && size.w <= init.bp[5]){ if($body.hasClass(init.bodyClass[5])) return false; bnum = 5; } else{ if($body.hasClass(init.bodyClass[6])) return false; bnum = 6; } initBodyClass(bnum); imageChange(bnum) rspswitch = true; } // bodyのclass内を調整 function initBodyClass(cnum){ $body.addClass(init.bodyClass[cnum]); for(var i = 0; i < init.bodyClass.length; i++){ if($body.hasClass(init.bodyClass[i]) == true && i != cnum){ $body.removeClass(init.bodyClass[i]); } } } // imgのsrcを変更 function imageChange(cnum){ var $imgChange = $('img.imgChange');     $imgChange.each(function() { var src = $(this).attr('data-src'); var end = src.substring(src.lastIndexOf('.'), src.length); if($(this).attr('data-bp').toLowerCase().indexOf(init.bodyClass[cnum]) != -1){ $(this).attr('src', $(this).attr('data-src').replace(end, '_' + init.bodyClass[cnum].charAt(0) + end)); }else{ $(this).attr('src', $(this).attr('data-src')); for(var i = cnum + 1; i < init.bodyClass.length-1; i++){ if($(this).attr('data-bp').toLowerCase().indexOf(init.bodyClass[i]) != -1){ $(this).attr('src', $(this).attr('data-src').replace(end, '_' + init.bodyClass[i].charAt(0) + end)); break; } } }     }); } return this; } /* * デバック用デバイス・ブラウザ情報 */ $.fn.debugData = function(options){ var defaults = { wrapdom : "body" }; var init = $.extend( defaults, options ); $(init.wrapdom).prepend("

px

"); $("#dwidth").css({ "font-size": "1.2em", "margin-right": "3px" }); $("#ua").css({ "margin-left": "10px" }); $("#bodyclass").css({ "margin-left": "10px" }); // 処理登録 this.bind("load resize", function(){ var usture = ""; for(key in ua){ if(ua[key] == true) usture += " " + key; } $("span#ua").text(usture); $("span#dwidth").text(size.w); $("span#bodyclass").text($("body").attr("class")); }); } })(jQuery); /* * レスポンシブ初期設定 */ $(function(){ // ベースhash要素生成 function rsphash(key) { return key; } // 変数をキーに代入 for(var i = 0; i < responsive.bp.length; i++){ var key = responsive.bodyClass[i]; rsp[rsphash(key)] = responsive.bp[i]; } $(window).setBreakpoints({ bp:responsive.bp, bodyClass:responsive.bodyClass }); // ブレイクポイント通過時の共通処理を登録 //$(window).debugData(); // デバック用デバイス・ブラウザ情報 });