【问题标题】:Bootstrap 3 - How to maximize input width inside navbarBootstrap 3 - 如何最大化导航栏中的输入宽度
【发布时间】:2013-09-04 08:27:29
【问题描述】:

现在我有一个导航栏,如下所示: http://bootply.com/78239

我想最大化“搜索”文本输入的宽度,而不创建换行符(即,“清除”链接将与“关于”链接紧密)。

我只有基本的 CSS 和网页设计经验。我读过一些关于“overflow: hidden”技巧的文章,但是当目标元素右侧有更多元素时,我不明白如何使用它。

谢谢


编辑:

部分解决方案可以是为每种情况“手动”设置宽度,例如http://bootply.com/78247

@media (max-width: 767px) {
  #searchbar > .navbar-form {
    width: 100%;
  }
}

@media (min-width: 768px) and (max-width: 991px) {
  #searchbar > .navbar-form {
    width: 205px;
  }
}

@media (min-width: 992px) and (max-width: 1199px) {
  #searchbar > .navbar-form {
    width: 425px;
  }
}

@media (min-width: 1200px) {
  #searchbar > .navbar-form {
    width: 625px;
  }
}

但当菜单的文本是“动态的”(例如,包含“Hello username”)时,此解决方案将不起作用。

如果您假设菜单的文本宽度有限制,我想这不是一个大问题 - 手动计算/测试这些宽度很烦人。 我只是想知道是否有一种巧妙的方法可以自动完成。

【问题讨论】:

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


    【解决方案1】:

    这里有两件事对我有用。添加 Orens 媒体查询,并将 display: inline 添加到该搜索栏表单组:

    <li id="searchbar">
              <form id="search_form" class="navbar-form navbar-left navbar-input-group " role="search">
                <div class="input-group">
                  <div class="input-group-btn">
                    <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">All <span class="caret"></span>
                    </button>
                  </div>
                  <div class="form-group">
                    <input name="search_input" type="text" class="form-control typeahead" placeholder="Search for items or shops" autofocus="autofocus">
                  </div>
                  <span class="input-group-btn">
              <button type="submit" class="btn btn-default"><i class="fa fa-search"></i>
              </button>
              </span>
                </div>
              </form>
            </li>
    

    使用 css:

    #search_form > .input-group > .form-group {
      display: inline;
    }
    

    【讨论】:

      【解决方案2】:

      对于 Bootstrap 版本 3.2 及更高版本,您还应该为input-group 设置display:table;,为input-group-addon 设置宽度为1%

      <div style="display:table;" class="input-group">
                  <span style="width: 1%;" class="input-group-addon"><span class="glyphicon glyphicon-search"></span></span>
                  <input type="text" autofocus="autofocus" autocomplete="off" placeholder="Search Here" name="search" style="" class="form-control">
                </div>
      

      演示 Bootstrap 版本 3.2+:http://www.bootply.com/t7O3HSGlbc

      --

      是否允许更改导航栏元素的位置?我不明白“如果不创建换行符(即,“清除”链接将与“关于”链接紧密)。试试这个:http://bootply.com/78374

      我做了什么:

      • 删除表单左侧的浮动(通过删除 navbar-left 类)
      • 给其他导航栏元素一个右浮动(navbar-right 类)
      • 将表单组的显示设置为内联 (style="display:inline")
      • 改变元素的位置(右边先浮动)

      相关问题:

      html

      <div class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
          <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="#">My Project</a>
          </div>
          <div class="navbar-collapse collapse" id="searchbar">
      
            <ul class="nav navbar-nav navbar-right">
              <li><a href="about.html">About</a></li>
              <li id="userPage">
                <a href="#@userpage"><i class="icon-user"></i> My Page</a>
              </li>
              <li><a href="#logout" data-prevent="">Logout</a></li>
            </ul>
            <ul class="nav navbar-nav navbar-right">
              <li><a href="#" title="Start a new search">Clear</a></li>
            </ul>
      
      
      
           <form class="navbar-form">
              <div class="form-group" style="display:inline;">
                <div class="input-group">
                  <span class="input-group-addon"><span class="glyphicon glyphicon-search"></span></span>
                  <input class="form-control" name="search" placeholder="Search Here" autocomplete="off" autofocus="autofocus" type="text">
                </div>
              </div>
            </form>
      
          </div><!--/.nav-collapse -->
        </div>
      </div>
      

      【讨论】:

      • 谢谢。我不完全理解为什么改变元素的位置可以解决问题,但它有效!我猜是“显示:内联;”适用于前面的元素(即把它们放在同一行)而不是后面的元素 - 我是对的吗?
      • 要查看会发生什么,请在表单中添加彩色背景。浮动元素占用“所有”可用空间。在计算表格的可用空间之前更改职位保留空间。请参阅:css-tricks.com/the-css-box-model 默认情况下,表单组从 boostrap 获取内联块显示。这可以防止输入再次占用 100% 的可用空间,请参阅:designshack.net/articles/css/…
      • 我看到的一个问题是,当您在 Android 设备上点击搜索时,它会被键盘隐藏。对此有什么想法吗?
      • 哇侯谢谢。尽管我现在考虑对 css 和 bootstrap 有一个不错的了解,但我自己也无法摆脱这个...
      • 使用 Bootstrap 3.2 有什么方法可以实现这一点?
      猜你喜欢
      • 2014-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-26
      • 1970-01-01
      相关资源
      最近更新 更多