简体   繁体   English

移动热门导航问题

[英]Mobile top navigation issue

my site is http://www.kaniamea.com/ph/ . 我的网站是http://www.kaniamea.com/ph/ Please minimize the screen or see this page with a mobile device. 请最小化屏幕或使用移动设备查看此页面。 Then when you click on the top right where the menu icon is the header jumps up as the drop menu appears (which results in hiding the whole header). 然后,当您单击右上角菜单图标所在的位置时,标题菜单会随着显示下拉菜单而跳升(这将隐藏整个标题)。 Is there a way to prevent this so when you click on the menu icon the menu will appear under without to hide the header on top? 有没有一种方法可以防止这种情况,所以当您单击菜单图标时,菜单将显示在下方,而不会在顶部隐藏标题? thanks and Merry Christmas to everyone! 谢谢大家,圣诞快乐!

<!-- Start Main -->
<div id="main">
  <!-- Start Header -->
  <div id="header">
    <!-- Start Logo -->
    <div id="logo">
      <h1><a href="#">Logo</a></h1>
    </div>
    <!-- End Logo -->
    <!-- Start Nav -->
    <div id="nav" role="navigation"> <a href="#nav" title="Show navigation">Show navigation</a> <a href="#" title="Hide navigation" >Hide navigation</a>
      <ul class="clearfix">
        <li class="home"><a href="link.html">Home</a></li>
        <li><a href="link.html">What Happened</a></li>
        <li><a href="link.html">Today</a></li>
        <li> <a href="javascript:void(0);" aria-haspopup="true"><span>Visit</span></a>
          <ul>
            <li> <a href="link.html">Tours</a></li>
            <li> <a href="link.html">Directions</a></li>
            <li><a href="link.html">Operating Hours</a></li>
            <li><a href="link.html">Things To Do</a></li>
            <li><a href="link.html">Before You Come</a></li>
             </ul>
        </li>
        <li> <a href="javascript:void(0);" aria-haspopup="true"><span>Battleships</span></a>
          <ul>
            <li> <a href="link.html">Arizona</a></li>
            <li><a href="link.html">Oklahoma</a></li>
            <li><a href="link.html">West Virginia</a></li>
            <li><a href="link.html">California</a></li>
            <li><a href="link.html">Nevada</a></li>
            <li><a href="link.html">Pennsylvania</a></li>
            <li><a href="link.html">Maryland</a></li>
            <li><a href="link.html">Missouri</a></li>
            <li><a href="link.html">Tennessee</a></li>
            <li><a href="link.html">Utah</a></li>
          </ul>
        </li>      
      </ul>
    </div>
    <!-- End Nav -->
  </div>
  <!-- End Header -->

Nav css is : Nav css是:

#nav {
    display: block;
    background-image: url("images/nav-bg.png");
    background-repeat: no-repeat;
    width: 681px;
    height: 63px;
    float: right;
    margin-right: -1.77em;
    margin-top: 1.6em;
}
#nav > a {
    display: none;
}
#nav li {
    position: relative;
}
#nav li a {
    padding: 20px 25px 20px 25px;
    color: #FFF;
    font-size: 1.1em !important;
    text-decoration: none;
    font-weight: bold;
    display:block;
}
#nav li a:hover {
    background-image:url(images/hover.png);
    background-repeat: repeat-x;
}
#nav span:after {
    width: 0;
    height: 0;
    border: 0.313em solid transparent; /* 5 */
    border-bottom: none;
    border-top-color: #F81302;
    content: '';
    vertical-align: middle;
    display: inline-block;
    position: relative;
    right: -0.313em; /* 5 */
}
/* first level */

#nav > ul > li {
    float: left;
    z-index:1000;
    overflow:visible;
}
#nav > ul > li > a {
    height: 100%;
    font-size: 1.1em; /* 24 */
}
 #nav > ul > li:hover > a,  #nav > ul:not( :hover ) > li.active > a {
 background-image:url(images/hover.png);
 background-repeat: repeat-x;
}
/* second level */

#nav li ul {
    background-color: #BE0115;
    display: none;
    position: absolute; 
    top: 100%;
    width:170px;
}
#nav li:hover ul {
    display: block;
    left: 0;
    right: 0;
}
 #nav li:not( :first-child ):hover ul {
 left: -1px;
}
#nav li ul a {
    font-size: 1.25em; /* 20 */
    border-top: 1px solid #D90018;
    padding: 0.75em; /* 15 (20) */
}
 #nav li ul li a:hover,  #nav li ul:not( :hover ) li.active a {
 background-image:url(images/drop-nav-bg.png);
 background-repeat: repeat-x;
}

 @media only screen and ( max-width: 800px ) {
 html {
 font-size: 75%; /* 12 */
}
 #nav {
 width: 100%;
 position: static;
 margin: 0;
 top: auto;
 left: auto;
 background-image: none;
 float: right;
 height:auto;
 }

 #nav > a {
 width: 40px;
 height: 40px;
 text-align: left;
 text-indent: -9999px;
 background: url("images/menu-icon.png") repeat scroll center center #4C8FEC;
 float: right;
 margin-top: -45px !important;
}
 #nav > a:before,  #nav > a:after {
 margin-right:40px;
 margin-top:10px;
 content: '';
}
 #nav > a:after {
 margin-top:10px;
}
 #nav:not( :target ) > a:first-of-type,  #nav:target > a:last-of-type {
 display:block;


}
 #nav > ul > li:hover > a,  #nav > ul:not( :hover ) > li.active > a {
 background-image:none;
}

/* first level */

#nav > ul {
 height: auto;
 display: none;
 left: 0;
 right: 0;
 height: 3.75em;
 width: 200px;
 float:right;

}
 #nav:target > ul {
 display: block;
}
 #nav > ul > li {
 width: 100%;
 float: right;

}
 #nav > ul > li > a {
 height: auto;
 text-align: left;
 padding: 0 0.833em; /* 20 (24) */
 height: 100%;
 font-size: 1.1em; /* 24 */
 line-height: 2.5em; /* 60 (24) */
 background-color: #BE0115;
}
 #nav > ul > li > a:hover {
 background-image:url(images/drop-nav-bg.png);
 background-repeat: repeat-x;
}
 #nav > ul > li:not( :last-child ) > a {
 border-right: none;
}
#nav > ul > li:not(:last-child) > a {
 border-right: medium none;
 border-bottom: 1px solid #D90018;
}

/* second level */

#nav li ul {
 padding-top: 0;
 width: 200px;
 position: static; 
}
}

The issue you are seeing stems from using #nav:target to render the navigation. 您看到的问题源于使用#nav:target渲染导航。 You are telling the browser "Only show the menu when the url bar is http://www.kaniamea.com/ph/#nav ... By applying the #nav , you are also telling the browser to jump to the element with id="nav" . 您正在告诉浏览器“仅在网址栏为http://www.kaniamea.com/ph/#nav时显示菜单...通过应用#nav ,还可以告诉浏览器使用以下命令跳转到元素id="nav"

Rather than your css rely on :target , you can instead do #nav.showNav , and add a click event that toggles the showNav class. 而不是让CSS依赖:target ,您可以执行#nav.showNav ,并添加一个可切换showNav类的click事件。

$(function() {
    $('.toggle-nav').click(function(event){
        event.preventDefault();
        $('#nav').toggleClass('showNav');
    });
});

Whats important here is that you are calling event.preventDefault(); 重要的是要调用event.preventDefault(); , which prevents the default click behavior when you click on a link. ,这可以防止您在单击链接时发生默认的点击行为。

Here is your site with the example jquery here: http://jsfiddle.net/zc6w276o/ 这是您的网站,此处带有示例jquery: http : //jsfiddle.net/zc6w276o/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM