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

时间:2014-09-08 16:33:31

标签: html css twitter-bootstrap twitter-bootstrap-3

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

Img without navbar-nav

如果我想要达到它,我应该添加此css

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

但是这段css并没有解决我的IE8问题

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下的头部改为<body>元素的底部。

<!-- 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中它看起来像new navbar img in IE8

我的错误是位置包括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。此解决方案仅适用于输入组。请帮助我理解如何创建

  1. 导航栏内相同高度的响应项
  2. 拉伸宽度表单(使用输入组而不是表单组)这样一种方式,当我调整页面按钮的大小时,下一行显示

4 个答案:

答案 0 :(得分:4)

这个例子在Bootstrap 3.2中,它的组件有bug修复,但这可能 - 不是这里的问题。你的css非常混乱,很难确定IE8中哪些不起作用。

我会构建自己的组件,而不是使用Navbar,它不打算像你一样使用。如果没有对源CSS的熟悉,那么写得太多并不是一个好主意。

避免像你一样使用盒子大小的元素:border-box,尤其是当他们试图装入流体容器时。你有col- - 类的边距,这会搞砸。

Screen Shot IE 8:

enter image description here

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

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

提示:

  1. 将媒体查询保持在最低限度,尽可能减少使用次数。
  2. 每当你做出改变,即使是次要的,请检查IE8,然后你知道发生了什么。
  3. 评论你的html

  4. HTML :(在CSS和本地托管的CSS通过RELATIVE路径链接之前,需要根据他们的说明在头部正确安装respond.js。)

    注意:html和CSS不完整,小视口样式尚未完成。在最小宽度媒体查询之前,您可以在所有视口大小之间放置共享。如果所有内容都超出了媒体查询的范围,但是如果存在细微差别则可以删除该样式,因此如果小视口上有填充但没有较大的填充,请删除较大的填充,但如果有外观完全不同,然后将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;
        }
    } 
    

答案 1 :(得分:0)

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]-->

答案 2 :(得分:0)

在使用Bootstrap 3.1.1版之前

您必须了解浏览器兼容性和Windows资源管理器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文档:

B1

B2

答案 3 :(得分:0)

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