/* * sknfnc.js * * Copyright (c) 2016 n-iwasa * version: 0.02 * Comment: * * jQuery 1.8.3 later * */ /* 共通変数の宣言・定義 ------------------------------------------------------------- */ // 無害化関数群 var Sanitization = { // htmlエンティティ化 h: function(content) { var TABLE_FOR_ESCAPE_HTML = { '&': '&', '"': '"', "'": ''', '<': '<', '>': '>' }; return content.replace(/[&"'<>]/g, function(match) { return TABLE_FOR_ESCAPE_HTML[match]; }); } } // ウィンドウサイズ・スクロール値 var windowWidth, windowHeight, scrollY, scrollRatio, fixheaderheight, fixheaderoffset; //リサイズ時の処理待ち用タイマー var resizetimer = false; /* functions ------------------------------------------------------------- */ (function($) { $.sknfnc = { // --------------------------------- setImageProperty: function (options) { var c = $.extend({ targetArea :'body', }, options); $(c.targetArea).find('img').each(function(){ var w = $(this).width(), h = $(this).height(); if(w == h){ $(this).addClass('Square'); }else if(w > h){ $(this).addClass('Landscape'); //比率に応じて特殊処理 if(0.75*w <= h){ $(this).addClass('NarrowLandscape'); } }else{ $(this).addClass('Portrait'); } }); }, // --------------------------------- setColumnGroup: function (options) { var c = $.extend({ target :'.ColumnGroup' }, options); $(c.target).each(function(){ $(this).children().addClass('Column'); }); $('.AutoColumnGroup').each(function(){ $(this).addClass( 'ColumnGroup' + $(this).children(' .Column').length +'elements'); }); }, // --------------------------------- setAutoIcon: function (options) { var c = $.extend({ target :'.AutoIcon', icondefault :'icon-angle-right', iconext :'icon-link-ext', iconpdf :'icon-file-pdf', iconword :'icon-file-word', iconexcel :'icon-file-excel', iconarchive :'icon-file-archive' }, options); $(c.target).each(function(){ var icontype = c.icondefault, anchor = $(this); if( $(this)[0].tagName != 'A' ){ anchor = $(this).closest("a"); } if ( anchor.attr('href').indexOf('.pdf') != -1 ){ icontype= c.iconpdf; }else if ( anchor.attr('href').indexOf('.doc') != -1 ){ icontype= c.iconword; }else if ( anchor.attr('href').indexOf('.xls') != -1 ){ icontype= c.iconexcel; }else if ( anchor.attr('href').indexOf('.zip') != -1 ){ icontype= c.iconarchive; }else{ icontype= c.icondefault; } //alert(icontype); $(this).addClass(icontype).removeClass('AutoIcon'); }); }, // --------------------------------- setTelLink: function (options) { var c = $.extend({ target :'.Tel' }, options); $(c.target).each(function(){ var telnum = $(this).text(); //alert(telnum); telnum = telnum.replace(/[^0-9]/g, ''); $(this).wrap(''); }); }, // --------------------------------- setRsBreakPoint: function (options) { var c = $.extend({ target :'body', bp1 :1150, bp2 :900, bp3 :820, bp4 :650, bp5 :400, minheight:400 }, options); var tmpwidth = $(c.target).innerWidth(); // ターゲットの幅とbp各値を比較してクラス名を付加 $(c.target).removeClass(function(index, className) { return (className.match(/\brsbp-\S+/g) || []).join(' '); }); if (tmpwidth >= c.bp1){ $(c.target).addClass('rsbp-over-bp1'); $(c.target).addClass('rsbp-over-bp2'); $(c.target).addClass('rsbp-over-bp3'); $(c.target).addClass('rsbp-over-bp4'); $(c.target).addClass('rsbp-over-bp5'); }else if(tmpwidth >= c.bp2){ $(c.target).addClass('rsbp-under-bp1'); $(c.target).addClass('rsbp-over-bp2'); $(c.target).addClass('rsbp-over-bp3'); $(c.target).addClass('rsbp-over-bp4'); $(c.target).addClass('rsbp-over-bp5'); }else if(tmpwidth >= c.bp3){ $(c.target).addClass('rsbp-under-bp1'); $(c.target).addClass('rsbp-under-bp2'); $(c.target).addClass('rsbp-over-bp3'); $(c.target).addClass('rsbp-over-bp4'); $(c.target).addClass('rsbp-over-bp5'); }else if(tmpwidth >= c.bp4){ $(c.target).addClass('rsbp-under-bp1'); $(c.target).addClass('rsbp-under-bp2'); $(c.target).addClass('rsbp-under-bp3'); $(c.target).addClass('rsbp-over-bp4'); $(c.target).addClass('rsbp-over-bp5'); }else if(tmpwidth >= c.bp5){ $(c.target).addClass('rsbp-under-bp1'); $(c.target).addClass('rsbp-under-bp2'); $(c.target).addClass('rsbp-under-bp3'); $(c.target).addClass('rsbp-under-bp4'); $(c.target).addClass('rsbp-over-bp5'); }else if(tmpwidth < c.bp5){ $(c.target).addClass('rsbp-under-bp1'); $(c.target).addClass('rsbp-under-bp2'); $(c.target).addClass('rsbp-under-bp3'); $(c.target).addClass('rsbp-under-bp4'); $(c.target).addClass('rsbp-under-bp5'); } if(windowHeight < c.minheight){ $('body').addClass('rsbp-lowheight'); } }, // --------------------------------- smoothScroll: function (options) { var c = $.extend({ header :'#HeaderDivition', speed :500, }, options); //固定ヘッダの高さ(固定ヘッダがないなら0にしておく) var headerHeight; if($(c.header).css("position") == 'fixed'){ headerHeight = $(c.header).innerHeight(); }else{ headerHeight = 0; } //アンカークリック時にhrefに応じて発動 $('a[href^=#]').click(function() { if($(this).attr("href") != "#"){ // アンカーの値取得 var href = $(this).attr("href"); // 移動先を取得 var target = $(href == "#" || href == "" ? 'html' : href); // 移動先を数値で取得 var position = target.offset().top-headerHeight; //ヘッダの高さ分位置をずらす // スムーススクロール $('body,html').animate({scrollTop:position}, speed); return false; } }); //URLに#hogehogeがある場合に発動 var hash = location.hash; if(hash){ $(window).load(function() { // 移動先を取得 var target = $(Sanitization.h(hash)); // 移動先を数値で取得 var position = target.offset().top-headerHeight; //ヘッダの高さ分位置をずらす // スムーススクロール $('body,html').animate({scrollTop:position}, speed); return false; }); } }, // --------------------------------- scrollWindowHeight: function (options) { var c = $.extend({ btn :'#Scroller a', speed :500, }, options); var pos, dir; $(window).on("load resize", function(){ winH = $(this).height(); }); $(c.btn).click(function() { ($(this).attr("data-dir") == "Top")? dir = -1 : dir = 1; pos = scrollY + winH * dir; $('body,html').not(':animated').animate({scrollTop:pos}, c.speed); }); } // --------------------------------- }; })(jQuery);