Bootstrap 3.1.1导航栏中相同高度的响应项目

Posted

技术标签:

【中文标题】Bootstrap 3.1.1导航栏中相同高度的响应项目【英文标题】:Responsive items of same height inside navbar in Bootstrap 3.1.1 【发布时间】:2014-11-01 22:47:58 【问题描述】:

我阅读了有关 navbar-nav 的信息,但我没有使用它,因为它从我的 li 元素而不是 row 中创建一个列表。

如果我想达到它,我应该添加这个 css

@media screen and (min-width: 768px) 
.navbar-nav 
    width: 100%;

 

但是这段 css 并不能解决我的 IE8 问题

html 代码

<nav class="status-navbar navbar navbar-default" role="navigation">
    <!-- Collect the nav links, forms, and other content for toggling -->
    <div
        class="collapse navbar-collapse container-fluid container-lg-height container-md-height"
        id="bs-navbar-collapse-1">
        <div class="row row-lg-height row-md-height" style="margin: 0;">
            <div
                class="col-lg-4 col-md-4 search-panel col-lg-height col-md-height col-middle">
                <form class="navbar-form navbar-left search-form" role="search">
                    <div class="form-group col-lg-10 col-md-10">
                        <input type="text" class="search-input form-control input-lg"
                            placeholder="Twitter Quick Search">
                    </div>
                    <div class="col-lg-2 col-md-2">
                        <button type="button" class="btn btn-lg btn-primary">
                            <span class="glyphicon glyphicon-search"></span>
                        </button>
                    </div>
                </form>
            </div>
            <div class="col-lg-7 col-md-7 col-lg-height col-md-height col-middle">
                <ul class="nav navbar-nav">
                    <li class="col-lg-2 col-md-2 metricItem underline"><span class="metricsLabel">FOLLOWING</span>
                        <span id="followingTweetIds" class="metricsValue">0</span></li>
                    <li class="col-lg-3 col-md-3 metricItem"><span class="metricsLabel">SAVED
                            SEARCHES</span> <span class="metricsValue">0</span></li>
                    <li class="col-lg-2 col-md-2 metricItem">
                        <span class="metricsLabel">TWEETS RETRIEVED</span>
                        <span id="tweetsRetrieved" class="metricsValue">0</span>
                        <div class="limitPane">
                            <span class="metricsLabel">( LIMIT</span>
                            <span id="limitRequests" class="limitRequests"></span>
                            <span class="metricsLabel">)</span>
                        </div>
                    </li>
                </ul>
            </div>
            <div class="col-lg-1 col-md-1 col-lg-height col-md-height col-middle">
                <ul class="nav navbar-nav">
                    <li><a href="#" id="notificationBtn" class="notificationBtn" style="font-size: 17px;"> 
                            <span class="glyphicon glyphicon-bell">Notifications</span>
                        </a></li>
                </ul>
            </div>
        </div>
    </div>
</nav>

请帮助我了解我应该使用什么 navbar-nav 以及如何在我的示例中使其成为跨浏览器解决方案。

链接到JSFiddle

更有趣的是,我将这个片段的位置从 bootstrap.min.css 下的 head 更改为 &lt;body&gt; 元素的底部。

<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->

现在在 IE 8 中看起来像

包含 resond js 的位置是我的错误。因为我使用jquery布局框架。我知道我的显示有问题:table-row。我使用它是因为我想在行内创建高度相等的列Bootstrap 3 responsive columns of same height

在所有 Css 之后引用 Respond.js 脚本

.更新 2

我将导航栏更改为默认Bootply。但它看起来仍然与我想要达到的结果不同。我失去了在导航栏中对齐通知链接和表单元素的可能性,addind navbar-btn 无济于事。我不能为输入字段做响应宽度。 Bootstrap 3 - How to maximize input width inside navbar。此解决方案仅适用于输入组。请帮助我了解如何创建

    导航栏中相同高度的响应项 拉伸宽度表单(使用输入组而不是表单组)这样当我调整页面按钮大小时,下一行会向下

【问题讨论】:

您是否尝试过在页面顶部添加html5shiv.jsrespond.js @SimpleSandman 是的,如引导文档中所述 你能把你的头像和CSS贴出来吗? @Aibrean 我更新了问题 bootply.com/jvB9PqNswZ 你真的需要修复你的代码。这不仅不接近如何在引导程序中制作导航栏,还包括不会加载的图片以及空的 div 和其他什么都不做的代码。所以我强烈推荐阅读文档。 【参考方案1】:

此示例位于 Bootstrap 3.2 中,其中修复了其组件的错误,但这 - 可能 - 不是这里的问题。您的 css 非常混乱,很难确定哪些在 IE8 中不起作用。

我会构建自己的组件,而不是使用导航栏,因为导航栏不适合你使用。如果不熟悉源 CSS,重写这么多确实不是一个好主意。

避免像你一样在带有 box-sizing:border-box 的元素上使用边距,尤其是当它们试图适应流体容器时。你在 col-- 类上有边距,这会搞砸。

屏幕截图 IE 8:

演示:http://jsbin.com/zaxiwo/1/

编辑:http://jsbin.com/zaxiwo/1/edit

提示:

    将媒体查询保持在最低限度,即尽可能减少使用。 每次您进行更改,即使是很小的更改,检查 IE8,您就会知道发生了什么。 评论你的html

HTML:(要求在通过相对路径链接的 CSS 和本地托管的 CSS 之前,按照他们的说明将 respond.js 正确安装在头部。)

注意:html 和 CSS 不完整,小视口样式还没有完成。您在 min-width 媒体查询之前放置了所有视口大小之间的公共共享。如果它在媒体查询之外是通用的,但是如果有细微的差异,你可以删除该样式,所以如果小视口上有填充但大视口没有填充,请删除大视口上的填充,但如果有外观完全不同,然后将 smallviewport 样式仅放在最大宽度中,比最小宽度小 1px。

 <div class="control-bar container-fluid">
     <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".control-collapse">
     <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="collapse control-collapse">
        <div class="row">
           <div class="col-sm-3">
              <div class="input-group">
                 <input type="text" class="form-control">
                 <span class="input-group-btn">
                 <button class="btn btn-primary" type="button">Go!</button>
                 </span>
              </div>
              <!-- /input-group -->
           </div>
           <!--/.col-*-3 -->
           <div class="col-sm-5">
              <div class="row">
                 <div class="col-sm-4 indicator active">
                    <span class="title">Word</span>
                    <span class="number">1</span>
                 </div>
                 <!--/.col-*-4.indicator :: nested -->
                 <div class="col-sm-4 indicator">
                    <span class="title">Word</span>
                    <span class="number">2</span>
                 </div>
                 <!--/.col-*-4.indicator :: nested -->
                 <!--/.col-*-4 :: nested -->
                 <div class="col-sm-4 indicator">
                    <span class="title">Word</span>
                    <span class="number">3</span>
                    <span class="notice">word</span>
                 </div>
                 <!--/.col-*-4.indicator :: nested -->
              </div>
              <!--/.row (nested) -->
           </div>
           <!--/.col-*-7 -->
           <div class="col-sm-3 col-sm-offset-1 icon-link">
              <a href="#"><i class="glyphicon glyphicon-home"></i> icon link goes here</a>
           </div>
           <!--/.col-*-3 -->
        </div>
        <!--/.row -->
     </div>
     <!--/.nav-collapse -->
  </div>
  <!--/control-bar.container-fluid -->

CSS

.control-bar 
    background: #333;
    color: #fff;
    clear: both;


.control-bar a color:#fff

.control-bar .control-collapse 
    clear: both;
    width: 100%;
    padding: 0 15px 20px;

.control-bar .icon-bar 
    background: #fff;


.indicator:hover,
.indicator.active 
    border-bottom-color: orange

.indicator 
    padding: 10px 15px;
    border-bottom: 5px solid transparent;

.icon-link a 
    padding: 10px 0;
    display: block;

/* how it looks on larger viewports*/
@media (min-width:768px)   
    .control-bar .control-collapse 
        display: inline!important;
        padding: 0;
    
    .indicator 
        height: 100px;
        padding: 5px 0 0 0;
        display: table;
    
    .indicator span 
        display: table-row;
        text-align: center;
        font-size: 14px;
        border: 1px solid red;
        vertical-align: middle;
    
    .indicator .title 
        font-size: 15px;
        text-transform: uppercase;
    
    .indicator .number 
        font-size: 20px;
        color: orange;
    
    .indicator .notice 
        font-size: 12px
    
    /* height of parent minus by height of element divided by 2 */
    .control-bar .input-group 
        margin-top: 33px
    
    .icon-link 
        text-align: right;
        padding-top: 28px;
    
 

【讨论】:

【参考方案2】:

Internet Explorer 无法读取 CSS 媒体查询,因此您需要在 HTML 头部添加此元标记:

<meta name="viewport" content="width=device-width, initial-scale=1.0">

并包含一个 JS 文件,以便 IE 读取和执行这些媒体查询:

<!--[if lt IE 9]>
    <script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script>
<![endif]-->

【讨论】:

我有这个元标记。而且我在body的底部respond.js和html5smth.js毕竟包含了css文件。现在即使在 Chrome 中它看起来也不好。请检查 Bootly 链接和我的最后两个问题。【参考方案3】:

在使用 Bootstrap 版本 3.1.1 之前

您必须了解 Windows Explorer 8 的浏览器兼容性和 CSS3 支持!


请阅读:http://getbootstrap.com/getting-started/#support

此外,Internet Explorer 8 需要使用 respond.js 来 启用媒体查询支持。

另见:https://github.com/scottjehl/Respond

因此,基本模板的头部包含以下几行:

<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
  <script src="../../assets/js/html5shiv.js"></script>
  <script src="../../assets/js/respond.min.js"></script>
<![endif]-->

相关有用的链接

Bootstrap Support Documentation

CSS Compatibility in Internet Explorer

IE8 issue with Twitter Bootstrap 3- *** Question [Must Read]

Page Rendering in IE *** Question

Support of IE with Bootstrap *** Question


引导文档:

【讨论】:

我从 Bootstrap 文档中阅读了有关与 IE8 的兼容性的所有信息:添加元标记,包括像 respond.js 这样的 js 文件。我对所有浏览器通用的 2 个项目感兴趣。导航栏内相同高度的响应项目拉伸宽度表单(使用输入组而不是表单组)这样当我调整页面按钮大小时,下一行【参考方案4】:

尝试导入html5-respond.js 在您的 html 页面的 head 部分,hten IE 将能够呈现媒体查询。

【讨论】:

以上是关于Bootstrap 3.1.1导航栏中相同高度的响应项目的主要内容,如果未能解决你的问题,请参考以下文章

导航链接在导航栏中不起作用(Bootstrap)(Django)

Bootstrap / jQuery:在导航栏中滑动“活动”状态

导航栏中的 Bootstrap 3.0 按钮

菜单项未清除 Bootstrap 导航栏中的徽标

Bootstrap 导航栏中的中心菜单项

Bootstrap 3.0 导航栏中的多个折叠按钮