CSS Bootstrap navbar-центральная панель поиска, которая занимает всю ширину при сворачивании

У меня есть bootstrap V.3 navbar с 3 элементами в нем. Я хотел бы выровнять элементы равномерно так, чтобы панель поиска была центрирована в navbar. И когда он рушится, это занимает всю ширину. Но изо всех сил старается это сделать.

Это 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>

Я пытался сделать скрипку для него, но это не получилось хорошо, но, надеюсь, код там может дать некоторое представление.

3 ответа

  1. Класс «text-center» в bootstrap 3 предназначен для выравнивания дочернего элемента по центру.

  2. Самый простой способ использоватьflex, но он имеет плохую совместимость браузера, так что вы можете использовать media queriesи position:absolute;для .navbar-form.

    Дайте position-relativeк div .containerкак раз внутри nav. Я дал ему некоторую границу, так что вы можете видеть центрирование. Ваша 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>

  3. Вы можете достичь того же самого без flex и CSS3 свойств с некоторыми простыми настройками.

    Проверить демо здесь

    Попробовать это

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