2016-10-19 10 views
0

どのアンカーが選択されているかによって、異なるコンテンツを提供するアンカータグを使用しているメニューがあります。メニューアイテムが起動されると、リンク上のハッシュをブラウザのURLのハッシュと照合することによって、アクティブなクラスが親に追加されます。jQueryハッシュ変更がモバイルで起動しない

すべてはデスクトップ上では完全に機能しますが、モバイルに移行するとそれは起動しません。次のように

コードは次のとおりです。

$(window).on('hashchange', function(e) { 
 
    if ($('.menu-item').hasClass('active')) { 
 
     $(".menu-item").removeClass("active"); 
 
     $('[href$="' + window.location.hash + '"]').parent(this).addClass("active"); 
 
    } 
 
});
#artistNavigation { 
 
    -webkit-box-sizing: border-box; 
 
    -moz-box-sizing: border-box; 
 
    box-sizing: border-box; 
 
    padding: 0; 
 
    text-align: left; 
 
    width: 100%; 
 
    height: auto; 
 
    margin: 0 auto; 
 
    position: relative; 
 
    font-family: "Oswald", sans-serif; 
 
    box-shadow: 0 1px 0 0 #ddd; 
 
    -webkit-box-shadow: 0 1px 0 0 #ddd; 
 
} 
 
@media (max-width: 1000px) { 
 
    #artistNavigation { 
 
    padding-top: 50px; 
 
    width: calc(100% - 60px); 
 
    position: relative; 
 
    } 
 
    #artistNavigation.open li.menu-item { 
 
    display: block; 
 
    } 
 
} 
 
#artistNavigation li { 
 
    display: inline-block; 
 
    *display: inline; 
 
    zoom: 1; 
 
    text-align: left; 
 
    vertical-align: middle; 
 
    padding-right: 45px; 
 
    position: relative; 
 
    /*active state*/ 
 
} 
 
@media (max-width: 1000px) { 
 
    #artistNavigation li { 
 
    display: block; 
 
    text-align: center; 
 
    } 
 
    #artistNavigation li.mobi { 
 
    position: absolute; 
 
    top: 0; 
 
    left: 0; 
 
    right: 0; 
 
    height: 30px; 
 
    z-index: 99; 
 
    } 
 
    #artistNavigation li.menu-item { 
 
    display: none; 
 
    list-style-type: none; 
 
    } 
 
    #artistNavigation li.active { 
 
    display: block !important; 
 
    position: absolute; 
 
    top: 0; 
 
    left: 0; 
 
    right: 70px; 
 
    height: 30px; 
 
    z-index: 89; 
 
    display: block; 
 
    background: #fff; 
 
    } 
 
    #artistNavigation li.active a { 
 
    -webkit-transform: translateX(35px); 
 
    transform: translateX(35px); 
 
    } 
 
} 
 
#artistNavigation li a { 
 
    -webkit-transition: color 200ms ease; 
 
    -moz-transition: color 200ms ease; 
 
    -o-transition: color 200ms ease; 
 
    -ms-transition: color 200ms ease; 
 
    transition: color 200ms ease; 
 
    display: inline-block; 
 
    *display: inline; 
 
    zoom: 1; 
 
    padding: 17px 0; 
 
    text-align: center; 
 
    font-size: 12px; 
 
    line-height: 15px; 
 
    text-transform: uppercase; 
 
    white-space: nowrap; 
 
    cursor: pointer; 
 
    color: #b2b2b2; 
 
    position: relative; 
 
    border-bottom: solid 2px transparent; 
 
} 
 
@media (max-width: 1000px) { 
 
    #artistNavigation li a { 
 
    padding: 1rem 0; 
 
    } 
 
} 
 
#artistNavigation li a, 
 
#artistNavigation li a:visited, 
 
#artistNavigation li a:active, 
 
#artistNavigation li a:link { 
 
    color: #b2b2b2; 
 
} 
 
#artistNavigation li:hover > a, 
 
#artistNavigation li:focus > a, 
 
#artistNavigation li.active a { 
 
    color: #000; 
 
    border-bottom: solid 2px #25cbd3; 
 
} 
 
#artistNavigation li.pdf { 
 
    position: absolute; 
 
    right: 0; 
 
    top: 12px; 
 
    padding-right: 0; 
 
    text-transform: uppercase; 
 
    font-size: 12px; 
 
    color: #25cbd3; 
 
    padding-bottom: 16px; 
 
    border-bottom: solid 2px transparent; 
 
} 
 
#artistNavigation li.pdf:hover { 
 
    cursor: pointer; 
 
    color: #454545; 
 
} 
 
@media (max-width: 1000px) { 
 
    #artistNavigation:hover, 
 
    #artistNavigation:focus { 
 
    height: auto; 
 
    } 
 
    #artistNavigation li:active { 
 
    position: absolute; 
 
    top: 0; 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<nav id="art-nav" role="navigation"> 
 
    <div class="artist-nav-box"> 
 
    <ul id="artistNavigation"> 
 
     <li class="menu-item active"><a href="#Commercial">Commercial</a> 
 
     </li> 
 
     <li class="menu-item"><a href="#Fashion">Fashion</a> 
 
     </li> 
 
     <li class="menu-item"><a href="#Lifestyle">Lifestyle</a> 
 
     </li> 
 
     <li class="menu-item"><a href="#Portaits">Portaits</a> 
 
     </li> 
 
     <li class="menu-item"><a href="#Places">Places</a> 
 
     </li> 
 
     <li class="menu-item"><a href="#Animals">Animals</a> 
 
     </li> 
 
     <li class="menu-item"><a href="#Great-White-Shark">Great White Shark</a> 
 
     </li> 
 
     <li class="menu-item"><a href="#Panoramics">Panoramics</a> 
 
     </li> 
 
     <li class="menu-item"><a href="#Masai">Masai</a> 
 
     </li> 
 
    </ul> 
 
    </div> 
 

 
</nav>

私はそれが私が行方不明です単純なものであると確信している、SASS生成されたCSSを言い訳してください。

答えて

0

互換性のあるブラウザそれはCSSの問題であることが判明した場合についての詳細を見つける - 私はすべてのインスタンス削除:アクティブな状態にして、私の.activeクラスでそれを置き換えます。 :アクティブ状態では、項目rhough cssを絶対位置に対する相対位置から移動させます。そのため、クリックがダウンしたときにメニュー項目が移動しました。フルストップのために2時間30分:/

0

ハッシュ変更の検出にaddEventListenerを使用できます。

window.addEventListener("hashchange",function(event){ 
    if ($('.menu-item').hasClass('active')) { 
     $(".menu-item").removeClass("active"); 
     $('[href$="' + window.location.hash + '"]').parent(this).addClass("active"); 
    } 
}); 

here

関連する問題