如何在 twitter bootstrap3 的导航栏中增加搜索栏的宽度

Posted

技术标签:

【中文标题】如何在 twitter bootstrap3 的导航栏中增加搜索栏的宽度【英文标题】:How to increase the width of search bar in the navbar in twitter bootstrap3 【发布时间】:2013-09-29 12:49:25 【问题描述】:

我无法在 twitter bootstrap3 中增加导航栏搜索框的大小。我曾尝试将它们作为网格,但即使那样它也不起作用。我无法使用百分比来增加搜索框的大小,因为在移动设备上看到时,搜索栏与其他内容相比看起来太长了。 这是我一直在使用的导航栏代码:

<nav class="navbar navbar-default nav-margin-bottom navbar-fixed-top" role="navigation">
    <div class="row">
      <!-- Brand and toggle get grouped for better mobile display -->
      <div class="navbar-header col-md-1">
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
          <span class="sr-only">Toggle navigation</span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="#" style="font-weight:500%; font-family:Roboto; margin-left:18px;">Test</a> 
      </div>
      <!-- Collect the nav links, forms, and other content for toggling -->
      <div class="collapse navbar-collapse col-md-10">
      <div class="col-md-5">
        <form class="navbar-form navbar-left" role="search">
            <input type="text" class="form-control home-search" placeholder="Search" >
        </form>
      </div>
      <div class="col-md-7 navbar-right">
        <ul class="nav navbar-nav navbar-right">
          <li><a href="#"><b>Abcd</b></a></li>
          <li><a href="#"><b>Efgh</b></a></li>
          <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown"><b>Ijkl</b><b class="caret"></b></a>
            <!-- Link or button to toggle dropdown -->
            <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
              <li role="presentation"><a role="menuitem" tabindex="-1" href="#"><b>Mno</b></a></li>
              <li role="presentation"><a role="menuitem" tabindex="-1" href="#"><b>Pqrs</b></a></li>
              <li role="presentation"><a role="menuitem" tabindex="-1" href="#"><b>Settings</b></a></li>
              <li role="presentation" class="divider"></li>
              <li role="presentation"><a role="menuitem" tabindex="-1" href="#"><b>Log out</b></a></li>
            </ul>
          </li>
        </ul>
      </div>
      </div><!-- /.navbar-collapse -->
    </div> <!-- /.row -->
  </nav>

导航栏如下所示:

【问题讨论】:

Bootstrap 3 - How to maximize input width inside navbar的可能重复 @BassJobsen 但是这个问题解决了将搜索栏完全安装在中间的剩余空间中的问题。我想设置搜索栏的自定义宽度,但它应该是响应式的 【参考方案1】:

在你的 main.css 中添加这个类并缩放宽度

CSS

.home-search 
   width: 500px;
 

【讨论】:

我已经尝试过了,但它是特定的,所以它没有响应。 如果你使用百分比值? 即便如此,它还是超出了小屏幕设备的视口【参考方案2】:

@marvin 的解决方案似乎有效(覆盖所有),您可以通过添加以下媒体查询使其更具响应性:

/* Small devices (tablets, 768px and up) */
@media (min-width: 768px)  .home-search  width: 400px; 

/* Medium devices (desktops, 992px and up) */
@media (min-width: 992px)  .home-search  width: 600px;  

/* Large devices (large desktops, 1200px and up) */
@media (min-width: 1200px)  .home-search  width: 800px;  

真正的问题似乎是您使用网格类设置宽度的方式:

你使用:

<div class="collapse navbar-collapse col-md-10">
      <div class="col-md-5">

由于嵌套,表单的可用空间变为 (10/12 ) * (5/12) * 100 = 视口的 34%。您还可以将 navbar-left 用于表单,这也防止了输入向右扩展(由于 navbar-form 的宽度:auto)。

尝试以这样的方式使用网格类,即每个网格的列总和为 12,例如

<div class="navbar-header col-sm-1 col-md-1 col-lg-1">Logo</div>
<div class="collapse navbar-collapse">
<div class="col-sm-6 col-md-7 col-lg-8">searchform</div>
<div class="col-sm-5 col-md-4 col-lg-3 navbar-right">Right nav</div>

结果如下:

<nav class="navbar navbar-default nav-margin-bottom" role="navigation">
    <div class="row">
      <!-- Brand and toggle get grouped for better mobile display -->
      <div class="navbar-header col-sm-1 col-md-1 col-lg-1">
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
          <span class="sr-only">Toggle navigation</span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="#" style="font-weight:500%; font-family:Roboto; margin-left:18px;">Test</a> 
      </div>
      <!-- Collect the nav links, forms, and other content for toggling -->
      <div class="collapse navbar-collapse">
      <div class="col-sm-6 col-md-7 col-lg-8">
        <form class="navbar-form" role="search">
            <input type="text" class="form-control" placeholder="Search" >
        </form>
      </div>
      <div class="col-sm-5 col-md-4 col-lg-3 navbar-right">
        <ul class="nav navbar-nav navbar-right">
          <li><a href="#"><b>Abcd</b></a></li>
          <li><a href="#"><b>Efgh</b></a></li>
          <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown"><b>Ijkl</b><b class="caret"></b></a>
            <!-- Link or button to toggle dropdown -->
            <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
              <li role="presentation"><a role="menuitem" tabindex="-1" href="#"><b>Mno</b></a></li>
              <li role="presentation"><a role="menuitem" tabindex="-1" href="#"><b>Pqrs</b></a></li>
              <li role="presentation"><a role="menuitem" tabindex="-1" href="#"><b>Settings</b></a></li>
              <li role="presentation" class="divider"></li>
              <li role="presentation"><a role="menuitem" tabindex="-1" href="#"><b>Log out</b></a></li>
            </ul>
          </li>
        </ul>
      </div>
      </div><!-- /.navbar-collapse -->
    </div> <!-- /.row -->
  </nav>    

【讨论】:

【参考方案3】:

您好,我目前遇到了同样的问题,但我想通了,它对我有用,希望它也对你有用,看看

<div class="collapse navbar-collapse" id="toggleNavigation">
    <div class="col-sm-5">
        <form class="form" role="search" style="margin-top: 8px;">
            <div class="input-group">
                <input type="search" placeholder="Query?" class="form-control">
                <span class="input-group-btn">
                    <button type="submit" class="btn btn-warning">
                        <i class="fa fa-search" aria-hidden="true"></i>
                    </button>
                </span>
            </div>
        </form>
        <ul class="nav navbar-nav navbar-right">
            <li><a href="#">Home</a></li>
        </ul>
    </div>
</div>

【讨论】:

以上是关于如何在 twitter bootstrap3 的导航栏中增加搜索栏的宽度的主要内容,如果未能解决你的问题,请参考以下文章

Twitter typeahead .js 文件未更新

使用 Bootstrap 3 在 Twitter Typeahead 上的 CSS 问题

x-editable + bootstrap 3 + Twitter typeahead.js 不工作

如何将这些 Twitter bootstrap 3 导航栏链接居中?

Twitter 的 Bootstrap 3 网格,更改断点和删除填充

为 Twitter 的 Bootstrap 3.x 按钮设计样式