【问题标题】:Bootstrap navbar - removing fixed header from mobile devicesBootstrap navbar - 从移动设备中删除固定标题
【发布时间】:2018-05-15 14:48:11
【问题描述】:

如何将标题更改为不针对移动设备固定,但针对 md 和 lg 屏幕尺寸固定?

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

手机:<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>

【问题讨论】:

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


    【解决方案1】:

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

    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;}
    

    【讨论】:

    • 似乎无法让这个工作 - 它只适用于移动设备、平板电脑或台式机。
    • 哪一个?有两种选择,一种只是CSS,它只适用于屏幕宽度,另一种是使用js和CSS。
    • 嗨,克里斯蒂娜,两者都有效,但它使我的导航偏离了页面下方和左侧
    • 除非您提供示例链接,否则无法知道。固定位置需要位置或宽度,因此 .navbar-static-top 固定时需要 left:0;right:0;或宽度:100%,但除非您提供链接,否则我不知道具体。
    • 固定后也可能需要顶部位置。
    【解决方案2】:

    为手机设置非固定标题并不难,它只是一个 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

    【讨论】:

    • 位置:静态很有帮助。如果您执行 $(document).ready() 然后删除 navbar-fixed-top 类,它会有一些不需要的屏幕闪烁。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    相关资源
    最近更新 更多