Bootstrap导航栏 - 从移动设备中删除固定标头

时间:2015-01-09 13:09:51

标签: twitter-bootstrap twitter-bootstrap-3 navbar

如何更改移动设备未修复的标头,但修复了md和lg屏幕尺寸?

例如,您可以将nav类更改为;

移动:<nav class="navbar navbar-default" role="navigation">

桌面:<nav class="navbar navbar-default navbar-fixed-top" role="navigation">

...

<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
    <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-brand-centered">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <div class="navbar-brand navbar-brand-centered">Brand</div>
    </div>
    <div class="collapse navbar-collapse" id="navbar-brand-centered">
      <ul class="nav navbar-nav">
        <li><a href="#">Link</a></li>
        <li><a href="#">Link</a></li>
        <li><a href="#">Link</a></li>
      </ul>
      <ul class="nav navbar-nav navbar-right">
        <li><a href="#">Link</a></li>
        <li><a href="#">Link</a></li>
        <li><a href="#">Link</a></li>           
      </ul>
    </div><!-- /.navbar-collapse -->
  </div><!-- /.container-fluid -->
</nav>

2 个答案:

答案 0 :(得分:6)

您想要与移动设备或更小的屏幕尺寸隔离?有区别。如果你想要后者:

<强> HTML:

<nav class="navbar navbar-default navbar-static-top" role="navigation">

CSS:

@media (min-width:992px) {

    body {padding-top:HEIGHTOFNAVBAR}
    .navbar-static-top {position:fixed;top:0;right:0;left:0;}

}

如果你想在移动设备上实际避免固定导航,你可以用javascript来嗅探设备是否触摸。

/* --------------- SUPPORTS TOUCH OR NOT for IOS, Android, and Windows Mobile --------------- */
/*! Detects touch support and adds appropriate classes to html and returns a JS object  |  Copyright (c) 2013 Izilla Partners Pty Ltd  | http://www.izilla.com.au / Licensed under the MIT license  |  https://coderwall.com/p/egbgdw */
var supports = (function() {
    var d = document.documentElement,
        c = "ontouchstart" in window || navigator.msMaxTouchPoints;
    if (c) {
        d.className += " touch";
        return {
            touch: true
        }
    } else {
        d.className += " no-touch";
        return {
            touch: false
        }
    }
})();

然后您可以使用HTML(相同):

<nav class="navbar navbar-default navbar-static-top" role="navigation">

<强> CSS

  .no-touch body {padding-top:HEIGHTOFNAVBAR}
  .no-touch .navbar-static-top {position:fixed;top:0;right:0;left:0;}

答案 1 :(得分:5)

为手机设置无固定标头并不难,只是一个CSS问题:

<强> CSS

.headerclass { position:static;} //over rides the position fixed

现在更改类有点困难,但你可以做的是挂钩媒体查询更改。这需要使用Jquery(自带引导)。

您必须搜索css更改。 如果我们在媒体查询上设置了一些值,那么我们就可以切换类。

<强> CSS

@media only screen 
and (min-device-width : 1224px) {
    width:300px;
}

JavaScript Jquery

var navbar = $('navbar');
if (navbar.css('width') == '300px') {
    navbar.addClass('navbar-default navbar-fixed-top');
}

我使用这些测量值:Link