/* 2015/06/15 森井 */ $(function() { // 親メニューのマウスオーバで子メニュー表示 $(".submenu").hover(function() { $(this).children('ul').show(); }, function() { $(this).children('ul').hide(); }); }); $(function() { // タブ切替 $('.sj_list > ul > li').click(function() { /* コンテンツがない場合(=disable)は処理を行わない */ if (! $(this).hasClass("disable") ){ var num = $(this).parent().children('li').index(this); $('#sj_tab_menu').each(function(){ $(' > li',this).removeClass('active').eq(num).addClass('active'); }); $('.sj_list .sj_result').hide().eq(num).show(); } }).first().click();//liのfirst(=サービス情報)の要素をクリックイベント }); $(function(){ // #で始まるアンカーをクリックした場合に処理 $('a[href^=#]').click(function() { // スクロールの速度 var speed = 400; // ミリ秒 // アンカーの値取得 var href= $(this).attr("href"); // 移動先を取得 var target = $(href == "#" || href == "" ? 'html' : href); // 移動先を数値で取得 var position = target.offset().top; // スムーススクロール $('body,html').animate({scrollTop:position}, speed, 'swing'); return false; }); }); /** 左側メニューのスクロール固定(ie8〜) */ $(window).load(function () { //該当のセレクタなどを代入 var mainArea = $("#main"); //メインコンテンツ var sideWrap = $("#admin_menu"); //サイドバーの外枠 var sideArea = $(".sidebar"); //サイドバー /*設定ここまで*/ var wd = $(window); //ウィンドウ自体 //メインとサイドの高さを比べる var mainH = mainArea.height(); var sideH = sideWrap.height(); if(sideH < mainH) { //メインの方が高ければ色々処理する //サイドバーの外枠をメインと同じ高さにしてrelaltiveに(#sideをポジションで上や下に固定するため) sideWrap.css({"height": mainH,"position": "relative"}); //サイドバーがウィンドウよりいくらはみ出してるか var sideOver = wd.height()-sideArea.height(); //固定を開始する位置 = サイドバーの座標+はみ出す距離 var starPoint = sideArea.offset().top + (-sideOver); //固定を解除する位置 = メインコンテンツの終点 var breakPoint = sideArea.offset().top + mainH; wd.scroll(function() { //スクロール中の処理 if(wd.height() < sideArea.height()){ //サイドメニューが画面より大きい場合 if(starPoint < wd.scrollTop() && wd.scrollTop() + wd.height() < breakPoint){ //固定範囲内 sideArea.css({"position": "fixed", "bottom": "20px"}); }else if(wd.scrollTop() + wd.height() >= breakPoint){ //固定解除位置を超えた時 sideArea.css({"position": "absolute", "bottom": "0"}); } else { //その他、上に戻った時 sideArea.css("position", "static"); } }else{ //サイドメニューが画面より小さい場合 var sideBtm = wd.scrollTop() + sideArea.height(); //サイドメニューの終点 if(mainArea.offset().top < wd.scrollTop() && sideBtm < breakPoint){ //固定範囲内 sideArea.css({"position": "fixed", "top": "37px"}); }else if(sideBtm >= breakPoint){ //固定解除位置を超えた時 //サイドバー固定場所(bottom指定すると不具合が出るのでtopからの固定位置を算出する) var fixedSide = mainH - sideH; sideArea.css({"position": "absolute", "top": fixedSide}); } else { sideArea.css("position", "static"); } } }); } });