/*--------------------------------------------------------------------------* * * common * *--------------------------------------------------------------------------*/ /** Bootstrap Grid xs: 0, sm: 576px, md: 769px, lg: 992px, xl: 1200px */ // デバイス判定用 Bootstrap "xs" "sm" "md" "lg" var Device = {}; Device.screen = window.innerWidth; Device.breanpoint = 1; Device.xs = 0; Device.sm = 576; Device.md = 769; Device.lg = 992; Device.xl = 1200; var bp = new Axia( { breakpoints: [ Device.sm, Device.md, Device.lg, Device.xl ] }); $(function(){ // 要素 var $window = $(window), $html = $( 'html' ), $body = $( 'body' ), $elm_base = $( '#base' ), $elm_header = $( '#siteHeader' ), $elm_body = $( '#siteBody' ), $elm_footer = $( '#siteFooter' ), $elm_gnav = $( '#gnav' ); /* ---------------------------- */ // // 要素の生成 // /* ---------------------------- */ /** * バックスクリーン * */ var $elm_overlay = $( '
' ); $( '#base' ).after( $elm_overlay.hide() ); /** * ページの先頭へ * */ var $elm_page_top = $( '
' ); $( '#base' ).after( $elm_page_top ); /* ---------------------------- */ // // 関数呼び出し // /* ---------------------------- */ // 初期化 initialization(); bp.addEventListener( 'breakpoints', function( e ) { Device.screen = e['width']; Device.breanpoint = e['breakpoint']; document.activeElement.blur(); humberger_init(); globalnav_init(); }); /* ---------------------------- */ // // イベント // /* ---------------------------- */ /** * ページの先頭へ */ var fixed_pagetop = function( pos ) { var w = window.innerWidth || $elm_header.width(); if ( w >= Device.md ) { if ( pos > 100) $elm_page_top.addClass( 'is-active' ); else $elm_page_top.removeClass( 'is-active' ); } else { $elm_page_top.removeClass( 'is-active' ); } } //スクロール $window.scroll(function(e){ var current_pos = $(this).scrollTop(); fixed_pagetop( current_pos ); }); /** * ページ遷移時 */ //URLのハッシュ値を取得 var urlHash = location.hash; var jump = function(e) { if( $(this).data('smoothing') == 'no' ) return; // #で始まるURLの場合 if (e){ e.preventDefault(); var target = $(this).attr('href'); } else { // targetに別ページにある#を代入 var target = location.hash; } // 変数targetの位置までスクロール if( target != '#' ) { $('html, body').animate({ scrollTop: ( $(target).offset().top ) - 60 },800,function() { //location.hash = target; }); } }; $( 'a[href^="#"]' ).on( 'click', jump ); // // マウスオーバーした対象の親要素を指定してクラスを追加 // ----------------------------------------- var parent_hover = function(e) { } $( '.js-parent_hover' ) .on( 'mouseenter', function(){ var target = $(this).data( 'parenthover' ); if( $(this).parents( '.' + target ).length ) { $( $(this).parents( '.' + target ) ).addClass( 'is-hov' ); } }) .on( 'mouseleave', function(){ var target = $(this).data( 'parenthover' ); if( $(this).parents( '.' + target ).length ) { $( $(this).parents( '.' + target ) ).removeClass( 'is-hov' ); } }); /* ---------------------------- */ // // 関数群 // /* ---------------------------- */ // // 初期化処理 // ----------------------------------------- function initialization() { humberger(); } // // ハンバーガーメニュー // ----------------------------------------- function humberger() { var $trigger = $( '#gnav-humberger' ), $target = $elm_gnav; $trigger.on( 'click', function(){ $( this ).toggleClass( 'is-active' ); $elm_header.find( '.p-header' ).addClass( 'is-active' ); overlay( 'fadeIn' ); $target .slideToggle( 300, function() { if( ! $trigger.hasClass( 'is-active' ) ) { $elm_header.find( '.p-header' ).removeClass( 'is-active' ); overlay( 'fadeOut' ); } }); return false; }); } // // オーバーレイ // ----------------------------------------- function overlay( $state, $arg ) { if( ! $elm_overlay.length ) return false; $state = ( $state == null )? 'fadeIn' : $state; $arg = ( $arg == null )? 'fast' : $arg; if( $state == 'fadeIn' ) { $elm_overlay.fadeIn( $arg ); } else if( $state == 'fadeOut' ) { $elm_overlay.fadeOut( $arg ); } else if( $state == 'hide' ) { $elm_overlay.hide(); } } // // メインメニューの初期化 // ----------------------------------------- function globalnav_init( $type ) { var $target = $elm_gnav; if( Device.screen < Device.md ) { $target.slideUp( 300, function() { overlay( 'fadeOut' ); $(this).removeAttr( 'style' ); }); } else { $target.show(); $(this).removeAttr( 'style' ); overlay( 'hide' ); } } // // ハンバーガーメニューの初期化 // ----------------------------------------- function humberger_init() { var $target = $( '#gnav-humberger' ); $target.removeClass( 'is-active' ); } });