/* ------------------------------------------- * @init ------------------------------------------- */ $(function () { var u = new EPOS_CARD.Util(); $.accordion(); $(window).on('load', function (){ $.point_support_equalHeight(true, true); $.randomFadeIn(); }); }); (function($){ var u = new EPOS_CARD.Util(); /* * @method equalHeight * - 高さ揃え * @param {Boolean} * - 文字可変・リサイズに対応するかどうか */ $.point_support_equalHeight = function(fsCheck, wsCheck){ var className = ".point_support_equalHeight", childBaseName = "equalChild", cancelName = "sp-eqCancel", $elm = $(className), $children = $elm.children(), $spChildren = $elm.not("." + cancelName).children(),// SP時に有効となる要素 winW = u.$win.width(), fsCheck = fsCheck || false, wsCheck = wsCheck || true, spCheck = false; if($elm.length === 0 || $children.length < 2){ return false; } if(winW < u.breakPoint1){ spCheck = true; } /* childBaseNameのグループ化 */ var grouping = function(w){ var $groupedChildren = $elm.find("*[class*=" + childBaseName + "]"), classNames = {},groups = []; $groupedChildren.each(function(){ var splitClass = $(this).attr("class").split(" "), splitClassNum = splitClass.length, newClassName; for(var i = 0; i < splitClassNum; i++){ newClassName = splitClass[i].match(RegExp(childBaseName + "[a-z0-9,_,-]*", "i")); if(!newClassName){ continue; } else { newClassName.toString(); classNames[newClassName] = newClassName; } } }); // childBaseNameの格納 for(var c in classNames){ if(w < u.breakPoint1){ groups.push($elm.not("." + cancelName).find("." + c));// SP時にcancelNameを持つ要素を対象から外す } else { groups.push($elm.find("." + c)); } } return groups; }; /* 各要素の高さを揃える */ var equalHeight = function(elm){ var maxHeight = 0; elm.css("height", "auto"); elm.each(function(){ if($(this).outerHeight() > maxHeight){ maxHeight = $(this).outerHeight(); } }); return elm.outerHeight(maxHeight); }; /* init */ var init = function(){ var winW = u.$win.width(), groups = grouping(winW); var eqAct = function(eqObj){ var h = [], child = [], maxHeight = 0, top = 0; $.each(eqObj, function(){ var $group = $(this).not(":hidden");// 非表示要素に適用させない場合.not(":hidden")を付与 $group.each(function(i){ $(this).css("height", "auto"); h[i] = $(this).outerHeight(); if ((top !== Math.round($(this).offset().top)) && (top !== Math.round($(this).offset().top) + 1) && (top !== Math.round($(this).offset().top) - 1)) { equalHeight($(child)); child = []; top = Math.round($(this).offset().top); } child.push(this); }); }); if(child.length > 1){ equalHeight($(child)); } } // childBaseName要素の高さを揃える eqAct(groups); // 子要素の高さを揃える if(winW < u.breakPoint1){ // SP時 eqAct($spChildren); $("." + cancelName).children().css("height", "auto"); $("." + cancelName).find("*[class*=" + childBaseName + "]").css("height", "auto"); } else { // PC時 eqAct($children); setTimeout( function(){ $(".equalChild_bottom").css({ top: "inherit", bottom: 0 }); },100); } }; // 文字可変への対応可否 fsCheck ? u.isFontSizeCheck(init) : init(); wsCheck ? u.isWindowSizeCheck(init) : init(); } /* * randomFadeIn */ $.randomFadeIn = function(config){ var c = $.extend({ elm: ".js-mainImage", },config); // vars var $elm = $(c.elm), randomElmChild = $elm.children(); if($elm.length === 0){ return false; } // setting function randomAnime(){ $elm.addClass("play"); var rnd = Math.floor(Math.random() * randomElmChild.length); var moveData = "fadeUp"; $(randomElmChild[rnd]).addClass(moveData); randomElmChild.splice(rnd,1); if(randomElmChild.length == 0 ){ $elm.removeClass("play"); } else { setTimeout(function(){randomAnime();},500); } } // trigger if(!$elm.hasClass("play")){ randomAnime(); } } /** * @method accordion * - アコーディオン */ $.accordion = function(config){ // options var c = $.extend({ factorElement: '.js-accordion', triggerElement: '.js-accordion_trigger', panelElement: '.js-accordion_detail', panelDisplayType: 'allHide', // 初期表示設定:「allHide」or「allShow」 slideSpeed: 200 }, config); // vars var $elm = $(c.factorElement), accWrap = c.factorElement, accTrigger = c.triggerElement, accPanel = c.panelElement, display = c.panelDisplayType, activeName = 'is-active', speed = c.slideSpeed; // exit if($elm.length === 0){ return false; } // setting:表示設定 $elm.each(function(){ var wrap = $(this), trigger = wrap.find(accTrigger); switch(display){ // 全非表示の場合 case 'allHide': trigger.removeClass(activeName); wrap.find(accPanel).hide(); break; // 全表示の場合 case 'allShow': trigger.addClass(activeName); break; default: break; } }); // control $(accTrigger).on('click', function(){ var trigger = $(this), wrap = trigger.parents(accWrap); if(wrap.length){ if(trigger.hasClass(activeName)){ trigger.removeClass(activeName); wrap.find(accPanel).stop(true, true).slideUp(speed); } else { trigger.addClass(activeName); wrap.find(accPanel).stop(true, true).slideDown(speed); // 再実行 $.point_support_equalHeight(true, true); } } }); } })(jQuery);