我想出了制作方法,因此在移动版本中查看时,标题在单击时会消失,但在非移动版本中查看时,标题也会消失。如果不是移动版本,我该如何做才能使它在点击后不会消失?

的HTML

    <header>
    <div class="head_container">
        <a href="#" class="logo"><h1>Hello</h1></a>
        <nav>
            <a href="#" id="top_menu">Hello</a>
            <ul>
                <li><a href="#homepage">HomePage</a></li>
                <li><a href="#contact">Contact</a></li>
                <li><a href="#about">About</a></li>
            </ul>
        </nav>
    </div>
    <div class="clear"></div>
</header>


桌面CSS

nav {
    margin: 0 auto;
    float: right;
    font: 14px Arial, sans-serif;
    position: relative;
}

nav ul {
    padding: 0;
    margin: 0 auto;
}

nav li {
    display: inline-block;
    float: left;
    padding: 20px 0px;
}

nav li a {
    padding: 8px 15px;
    margin: 0 .15em;
    border-bottom: 1px solid transparent;
}

nav a {
    color: #000000;
    display: inline-block;
    text-decoration: none;
}

nav a#top_menu {
    display: none;
}

nav a:hover, nav a:active {
    color: #8148c1;
}


移动CSS

nav {
    float: none;
    line-height: 60px;
}

nav ul {
    display: none;
    height: auto;
}

nav li {
    display: block;
    width: 100%;
    float: none;
    padding: 0;
}

nav li a {
    border-bottom: 1px solid #ebebeb;
    padding: 0;
}

nav a {
    text-align: left;
    width: 100%;
    text-indent: 20px;
    white-space: nowrap;
}

nav a#top_menu {
    display: block;
    background-position: 20px 17px;
    text-indent: -9999em;
    position: relative;
    width: 100%;
    border-bottom: 1px solid transparent;
}

nav a#top_menu:after {
    content:"";
    background: url('../images/mini.png') no-repeat;
    width: 30px;
    height: 30px;
    display: inline-block;
    position: absolute;
    right: 15px;
    top: 15px;
}


的JavaScript

$(function () {
    menu = $("nav ul");
    $(top_menu).click(function () {
        if ($('nav ul').is(':visible')) {
            menu.slideUp()
        } else {
            menu.slideDown()
        }
    });

    $('nav li a').click(function () {
        menu.slideUp()
    });
});

最佳答案

您可以在javascript中检查视口宽度,并且仅当菜单为移动视口时才能使菜单上下滑动。

这应该工作-

$(function () {
    menu = $("nav ul");

    var preferredMobileViewPortWidth = "480"; /* you can keep this as your mobile media query width */
    var viewPortWidth = $(window).width();
    var isMobile = false;

    if(viewPortWidth <= preferredMobileViewPortWidth) {
      isMobile = true;
    }
    $(top_menu).click(function () {
        if(isMobile) {
          if ($('nav ul').is(':visible')) {
              menu.slideUp()
          } else {
              menu.slideDown()
          }
        }
    });

    $('nav li a').click(function () {
        if(isMobile) {
         menu.slideUp();
        }
    });
});

07-24 09:47
查看更多