【问题标题】:CSS Bootstrap navbar- center search bar that takes the whole width on collapseCSS Bootstrap navbar- 在折叠时占据整个宽度的中心搜索栏
【发布时间】:2017-01-18 00:30:55
【问题描述】:

我有一个引导 v.3 导航栏,其中包含 3 个元素。我想均匀地对齐元素,以便搜索栏在导航栏中居中。当它崩溃时,它会占用整个宽度。但很难做到这一点。

这是它的 html:

      <nav class="navbar navbar-transparent navbar-fixed-top" role="navigation">

        <div class="container">
          <!-- Brand and toggle get grouped for better mobile display -->
          <div class="col-lg-4 navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
              <span class="sr-only">Toggle navigation</span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
            </button>
            <img src="assets/img/logo.png" alt="logo">
          </div>

          <!-- Collect the nav links, forms, and other content for toggling -->
          <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <form class="navbar-form navbar-left navbar-search-form active" role="search">
               <div class="form-group">
                  <input type="text" value="" class="form-control" placeholder="Search...">
               </div>
            </form>
                    <ul class="nav navbar-nav">
              <li class="active">
                  <a href="javascript:void(0);"><i class="fa fa-search"></i></a>
              </li>
            </ul>
            <ul class="nav navbar-nav navbar-right">
              <li><button href="#gsdk" class="btn btn-round btn-default">Sign in</button></li>
            </ul>

          </div><!-- /.navbar-collapse -->
        </div><!-- /.container-fluid -->
      </nav>

我尝试为它创建一个fiddle,但结果并不好,但希望那里的代码可以提供一些想法。

【问题讨论】:

  • 你也可以添加你的css
  • 整个 css 在小提琴中
  • 但是小提琴有整个引导程序。我说的是你的自定义 css
  • 我没有自定义 CSS
  • 您是否尝试添加“文本中心”类?它应该将子元素对齐到中心。

标签: html css twitter-bootstrap navbar


【解决方案1】:

您可以在不使用 flex 和 CSS3 属性的情况下通过一些简单的调整来实现相同的效果。

查看演示HERE

试试这个

HTML:

<nav class="navbar navbar-transparent navbar-fixed-top" role="navigation">

  <div class="container">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
              <span class="sr-only">Toggle navigation</span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
            </button>

      <img class="logo" src="//placehold.it/50x50" alt="logo">
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <form class="navbar-form navbar-search-form active" role="search">
        <div class="form-group">
          <div class="input-group">
            <input type="text" class="form-control" placeholder="Search for...">
            <span class="input-group-btn">
        <button class="btn btn-default" type="button"><i class="fa fa-search"></i></button>
      </span>
          </div>
        </div>
      </form>

      <ul class="nav navbar-nav navbar-right">
        <li><button href="#gsdk" class="btn btn-round btn-default">Sign in</button></li>
      </ul>

    </div>
    <!-- /.navbar-collapse -->
  </div>
  <!-- /.container-fluid -->
</nav>

CSS:

body {
  background-color: #ddd;
}

.navbar {
  border: 1px solid #ccc;
}

.navbar-toggle .icon-bar {
  background-color: #333;
}

.navbar-nav > li {
  line-height: 50px;
  position: relative;
}

.logo, .navbar-nav > li > .btn {
  margin: 0 15px;
}

@media (min-width: 767px) {
  .navbar-search-form {
    position: absolute;
    left: 0;
    right: 0;
    margin: auto;
    width: 100%;
    float: none;
    text-align: center;
    padding: 8px 0;
  }
}

【讨论】:

    【解决方案2】:

    bootstrap 3 中的“text-center”类用于将子元素对齐到中心。

    【讨论】:

    • 我在你的小提琴中试过这个并且它有效。虽然调整大小使 2 个元素消失并出现(媒体查询的效果),但它们确实保持在中心。
    【解决方案3】:

    最简单的方法是使用flex,但是浏览器兼容性很差,所以.navbar-form可以使用media queriesposition:absolute;

    position-relative 赋予nav 内的div .container。我给了它一些边框,所以你可以看到居中。你的sign in 按钮粘在右上角,因为你给了它navbar-right 类。

    .navbar-header img{
      width:70px;
      margin:0;
    }
    .navbar-container{
      position:relative;
      border:1px solid red;
    }
    .navbar-header button span{
      color:black;
      background-color:green;
    }
    @media screen and (min-width:768px){
      form.navbar-form{
        position:absolute;
        top:50%;
        left:50%;
        transform:translate(-50%,-50%);
        margin:0;
      }
    }
    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
    
    <nav class="navbar navbar-transparent navbar-fixed-top" role="navigation">
      <div class="container navbar-container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <img src="http://www.chinabuddhismencyclopedia.com/en/images/thumb/b/b8/Nature.jpg/240px-Nature.jpg" alt="logo">
        </div>
       <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
          <form class="navbar-form navbar-search-form active" role="search">
            <div class="form-group">
              <input type="text" value="" class="form-control" placeholder="Search...">
              <a href="javascript:void(0);"><i class="fa fa-search"></i></a>
            </div>
          </form>
          <ul class="nav navbar-nav navbar-right">
             <li><button href="#gsdk" class="btn btn-round btn-default">Sign in</button></li>
          </ul>
        </div><!-- /.navbar-collapse -->
      </div><!-- /.container-fluid -->
    </nav>

    【讨论】:

      猜你喜欢
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      • 2023-01-11
      • 2014-04-15
      • 2021-06-18
      • 2023-04-10
      • 1970-01-01
      • 2022-01-24
      相关资源
      最近更新 更多