Javascript一页固定标题响应滑升和下降



我想出了如何让它在移动版本中查看时点击标题消失,但当你不在移动版本中时它也会消失。我如何使它,如果它不是在移动版本,它不会消失点击?

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 for Desktop

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 For Mobile

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中检查视口宽度&只让菜单向上滑动&如果是手机视窗,则为Down。

这应该可以工作-

$(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();
        }
    });
});

尝试检查您的视口宽度:

$(document).ready(function () {
     viewPort = (window).width();
     menu = $("nav ul");
      if( viewPort < 500) {
        $(top_menu).click(function () {
            if ($('nav ul').is(':visible')) {
                menu.slideUp()
            } else {
                menu.slideDown()
            }
        });
        $('nav li a').click(function () {
            menu.slideUp()
        });
      }
    });

希望有帮助!

如果你想检测移动设备并在Javascript中添加测试,这些脚本可以帮助你。

Modernizr也可以做得很好。

最新更新