【问题标题】:Bootstrap search field with icon in navigation header not appearing correctly导航标题中带有图标的引导搜索字段未正确显示
【发布时间】:2016-10-06 12:57:16
【问题描述】:

我正在尝试向我的 Bootstrap 3 模板添加一个带有标题的搜索框。我使用的模板是从 Bootstrap 主题页面购买的,是 Light UI Dashboard 主题。

我在 Stack Overflow 上找到了这个答案,但它没有正确显示(它在 Chrome 和 Edge 中都显示不正确)。

How to add a search box with icon to the navbar in Bootstrap 3?

我修改了我的代码以在我的标题中包含搜索框,但是字形图标不显示并且搜索框未对齐。这是屏幕截图。

我的代码如下:

@import url('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css');
<form runat="server">
  <!-- Fixed navbar -->
  <nav class="navbar navbar-inverse navbar-fixed-top">
    <div class="container">
      <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
          <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="/">Crown Ent.</a>
      </div>
      <div id="navbar" class="navbar-collapse collapse">

        <ul class="nav navbar-nav navbar-left">
          <li role="presentation" id="dashboard"><a href="./">Dashboard</a></li>
          <li role="presentation" id="workorders"><a href="workorders.aspx">Work Orders</a></li>
          <li role="presentation" id="invoices"><a href="invoices.aspx">Invoices</a></li>
          <li role="presentation" id="accounts"><a href="accounts.aspx">Accounts</a></li>
          <li role="presentation" id="people"><a href="people.aspx">People</a></li>
        </ul>

        <ul class="nav navbar-nav navbar-right">
          <li><a runat="server" href="~/admin">Settings</a></li>
          <li><a runat="server" href="~/admin">Help</a></li>
        </ul>

        <form class="navbar-form" style="padding-top:5px;">
          <div class="form-group" style="display:inline;margin-top:5px;">
            <div class="input-group" style="display:table;">
              <span class="input-group-addon"><i class="glyphicon glyphicon-search"></i></span>
              <input class="form-control" name="search" placeholder="Search Here" id="crown-search" autocomplete="off" autofocus="autofocus" type="text">
            </div>
          </div>
        </form>

      </div>
    </div>
  </nav>
  
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>

我看不出代码有什么问题。调整 CSS 边距以尝试固定定位也是无效的。

【问题讨论】:

  • 您是否正确导入了 CSS 和所有字形字体?
  • @JackJamieson 是的,CSS 导入正确,因为字形图标出现在页面的其他位置。

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


【解决方案1】:

UPD。我删除了第一行&lt;form runat="server"&gt; 并使用了代码

  <form class="navbar-form" role="search">
    <div class="form-group">
      <div class="input-group">

而不是

  <form class="navbar-form" style="padding-top:5px;">
    <div class="form-group" style="display:inline;margin-top:5px;">
      <div class="input-group" style="display:table;">

我还添加了一些 CSS 以使表单更宽。请检查结果。

@import url('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css');

#navbar .navbar-form {
  overflow: hidden;
}
#navbar .form-group,
#navbar .input-group {
  width: 100%;
}
#navbar .input-group-addon {
  width: 39px;
}
<!-- Fixed navbar -->
<nav class="navbar navbar-inverse navbar-fixed-top">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
        <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="/">Crown Ent.</a>
    </div>
    <div id="navbar" class="navbar-collapse collapse">

      <ul class="nav navbar-nav navbar-left">
        <li role="presentation" id="dashboard"><a href="./">Dashboard</a></li>
        <li role="presentation" id="workorders"><a href="workorders.aspx">Work Orders</a></li>
        <li role="presentation" id="invoices"><a href="invoices.aspx">Invoices</a></li>
        <li role="presentation" id="accounts"><a href="accounts.aspx">Accounts</a></li>
        <li role="presentation" id="people"><a href="people.aspx">People</a></li>
      </ul>

      <ul class="nav navbar-nav navbar-right">
        <li><a runat="server" href="~/admin">Settings</a></li>
        <li><a runat="server" href="~/admin">Help</a></li>
      </ul>

      <form class="navbar-form" role="search">
        <div class="form-group">
          <div class="input-group">
            <span class="input-group-addon"><i class="glyphicon glyphicon-search"></i></span>
            <input class="form-control" name="search" placeholder="Search Here" id="crown-search" autocomplete="off" autofocus="autofocus" type="text">
          </div>
        </div>
      </form>

    </div>
  </div>
</nav>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>

【讨论】:

  • 成功了,谢谢!字形图标出现,搜索框的位置正确,但有一点需要注意。搜索框为其默认宽度。如何让搜索框像原始屏幕截图一样填充 div 元素的长度?
  • @Nse 我添加了一些 CSS 以使表单更宽。我从&lt;form class="navbar-form" .... 中删除了navbar-righ。我已经更新了我的答案。请检查新结果。
  • @Nse 请注意,当屏幕宽度在 768 到 991 像素之间时,导航栏没有用于表单的空间。您可以将hidden-sm 类添加到您的表单中。
【解决方案2】:

为了解决不对齐的问题,改变这个:

<div class="form-group" style="display:inline;margin-top:5px;">

到这里:

<div style="margin-top:5px;">

【讨论】:

    【解决方案3】:

    如果您希望它位于另一侧,您只需在输入字段后添加包含搜索图标的 span

    所以

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

    看起来您还需要对 input-group 类应用一个 margin-top 值,可以随意添加另一个名为 search 的类或其他东西来应用它

    这似乎是一个简单的 CSS 修复

    仅供参考,字形图标出现在我的所有 3 个浏览器(Chrome、FF 和 IE)中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-28
      • 2021-08-09
      • 2023-03-27
      • 2017-02-04
      • 1970-01-01
      • 1970-01-01
      • 2017-12-09
      • 2021-11-21
      相关资源
      最近更新 更多