防止菜单在 768px 显示 CSS 媒体查询中折叠

Posted

技术标签:

【中文标题】防止菜单在 768px 显示 CSS 媒体查询中折叠【英文标题】:Prevent menu from collapsing in 768px display CSS media query 【发布时间】:2012-04-23 01:57:31 【问题描述】:

我正在尝试使用 twitter bootstrap 做一个网站。我的菜单相对较少,所以它也适合 768px 显示。但在默认情况下,在引导程序中,菜单使用媒体查询折叠。我无法阻止这种行为。

这是我的html

<div class="row">
    <div class="span3 logo"><h1><img src="img/logo.png" /></h1></div>
    <div class="span9">

        <div class="navbar">
          <div class="navbar-inner">
            <div class="container">
         <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </a>
              <div class="nav-collapse">
                <ul class="nav nav-pills">
                  <li><a href="#">Home</a> </li>
                  <li><a href="#">Services</a> </li>
                  <li><a href="#">Portfolio</a> </li>
                  <li><a href="#">Contact Us</a> </li>
                </ul>
              </div>
            </div>
          </div>
        </div>



    </div>
    </div>

我知道这与引导程序中的媒体查询有关,但无法理解。

【问题讨论】:

【参考方案1】:

这是我用于引导程序 3.3.4 的内容。这是一个 hack,但也不是 2 天的修复重做 css。

@media (min-width: 768px) and (max-width: 979px) 
  .navbar-header 
    width: 100% !important;
  
  .navbar-toggle 
    display: inline-block !important;
    float: right !important;
  

您可能需要调整选择器,但基本上,将标题设为全角,然后显示并向右浮动按钮。

【讨论】:

我可以在右侧看到 3 栏菜单,但主菜单仍然可见。此外,3 栏图标不会单击。有人可以建议我吗?我正在使用 Bootstrap 3.3.7。谢谢。【参考方案2】:

您可以从 sass-twitter-bootstrap scss 文件中自定义 Twitter Bootstrap css 编译,并将 _variables.scss 中的 $navbarCollapseWidth 设置为您想要的值...

编辑

正如@Accipheran 在 cmets 中所述,对于 Bootstrap 3.x,您应该设置的变量名称是 $grid-float-breakpoint

【讨论】:

我遇到了完全相同的问题。我希望导航栏在手机上折叠,而不是在 iPad 上。这就是答案。将$navbarCollapseWidth 设置为767px。 iPad 的宽度为 768 像素,因此不会折叠。这是正确的答案,并且比手动覆盖多个媒体查询要干净得多。 @emkman 当然它是最好的解决方案。如果您使用它,也可以与 LESS 一起使用! @emkman 不要使用 767px...不是每个人都有 iPad...只需使用您实际想要的像素数,不要只满足 iPad屏幕。 @DanRasmussen 如果您阅读我的评论,我特别提到 iPad 是有原因的。我的目标是 iPad,因此 767px 是我真正想要的像素数。 对于 bootstrap 3,您需要设置的变量是 $grid-float-breakpoint。此外,您可以在调用 @import "bootstrap" 行之前的任何位置在自己的 css 文件中设置此变量,而不是进入引导源。【参考方案3】:

如果您想完全禁用折叠导航栏,请在您的自定义 LESS 文件中添加此变量:

@grid-float-breakpoint: 0px;

【讨论】:

【参考方案4】:

查找变量:

@grid-float-breakpoint

设置为@screen-sm,你可以根据自己的需要更改。

如果覆盖vendorless文件,将变量设置为0px,例如:

@grid-float-breakpoint: 0px;

【讨论】:

【参考方案5】:

您需要阅读引导站点上的以下部分:使用媒体查询: http://getbootstrap.com/2.3.2/scaffolding.html#responsive(引导程序 2.3.2) http://getbootstrap.com/getting-started/#disable-responsive(引导程序 3)

当视口缩小时,您需要使用相关的媒体查询来覆盖引导程序添加的样式。

  // Landscape phones and down
  @media (max-width: 480px)  ... 

  // Landscape phone to portrait tablet
  @media (max-width: 768px)  ... 

  // Portrait tablet to landscape and desktop
  @media (min-width: 768px) and (max-width: 980px)  ... 

  // Large desktop
  @media (min-width: 1200px)  .. 

如果您不希望导航栏折叠,请从类名中删除“折叠”。您可能应该摆脱:

<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">

简而言之,请查看文档,这里有一个部分涵盖了这个确切的内容,标题为“可选的响应式变体”: http://getbootstrap.com/2.3.2/components.html#navbar(引导程序 2.3.2)

【讨论】:

我也有同样的问题,但您链接中的页面没有帮助。我正在寻找的是菜单在 iPhone 上折叠而不是在 ipad 上折叠。该页面没有解释如何做到这一点。有什么提示吗? 使用媒体查询——你想要的是最大宽度:480px。如果您查看 Bootstrap 响应式 CSS,您会看到如下部分:gist.github.com/2585018。删除改变导航栏的部分,并将它们放在 max-width:480px 部分。 所以如果我理解正确,您是说要从@media max-width: 768px 中删除折叠功能? 是的,然后将其转储到 max-width:480px 中。应该是犹太教的。 下面的答案是最直接的。即使您使用的是静态引导程序,您也可以在twitter.github.com/bootstrap/customize.html#variables 更改@navbarCollapseWidth 并下载自定义版本。【参考方案6】:

阅读答案,我相信您正在谈论 Bootstrap 版本 2。也许有人正在寻找 Bootstrap 3 的答案。这个答案是给你的!

    转到Bootstrap customization page 为硬编码(例如 520 像素)或较小的屏幕尺寸(如 @screen-xs-min)重新定义 @grid-float-breakpoint 值 按页面底部的按钮重新编译css文件 用下载的 zip 文件中的文件替换您的 bootstrap.css 和 bootstrap-min.css 文件。

【讨论】:

如果我只希望子导航菜单而不是主菜单发生这种情况怎么办?这似乎并不容易,因为引导程序本身(还)没有子导航...... :(【参考方案7】:

本例来自官网:http://getbootstrap.com/examples/non-responsive/

更改在 non-responsive.css 中,但与 .navbar 有关的重要部分是:

body 
    padding-top: 70px;
    padding-bottom: 30px;

.page-header 
    margin-bottom: 30px;

.page-header .lead 
    margin-bottom: 10px;

.navbar-collapse 
    display: block !important;
    height: auto !important;
    padding-bottom: 0;
    overflow: visible !important;

.navbar-nav 
    float: left;
    margin: 0;

.navbar-nav > li 
    float: left;

【讨论】:

【参考方案8】:

如果您只想让导航不折叠直到它达到较小的值,最简单的方法是转到Twitter Bootstrap customization page,将@navbarCollapseWidth 更改为您想要的值,然后下载包.完成。

如果您想在此页面允许的范围之外进行自定义,则必须按照其他答案中的说明进行覆盖或自定义。

【讨论】:

【参考方案9】:

这对我很有效:

.nav-collapse, .nav-collapse.collapse 
    overflow: visible;
   
.navbar .btn-navbar 
    display: none;
   

【讨论】:

这是正确的答案。把它放到@media (min-width: 768px) 和 (max-width: 979px) 中,它工作得很好。无需更改引导程序文件,并按照引导程序的工作方式完成,并带有覆盖。 现在是 .navbar-toggle 而不是 .btn-navbar @SerjSagan 这两个选项都不适用于 Bootstrap 3。我仍然得到一个较小尺寸的垂直菜单。

以上是关于防止菜单在 768px 显示 CSS 媒体查询中折叠的主要内容,如果未能解决你的问题,请参考以下文章

响应式设计2---媒体查询基础知识

CSS 媒体查询的精确非(逆)

CSS媒体查询否定[重复]

Galaxy S3 的 CSS 媒体查询

Chrome上媒体查询中的CSS变量? [复制]

使用媒体查询在调整窗口大小期间隐藏 div