javascript - 使我的导航栏表单搜索字段全宽

标签 javascript html css angular twitter-bootstrap

我有这个navbar在下面,我想将搜索字段设置为全宽,这样它就可以尽可能多地扩展导航栏,而不会挡住任何其他内容。

我该怎么做?

我尝试了几种不同的方法,例如设置不同元素的宽度,但似乎没有任何效果。

<nav class="navbar navbar-expand-md navbar-dark bg-primary">
  <div class="container">
    <a class="navbar-brand" [routerLink]="['/home']">Web App</a>

    <form class="form-inline">
      <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
    </form>

    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#test" aria-expanded="false">        <span class="navbar-toggler-icon"></span>      </button>

    <div class="collapse navbar-collapse" id="test">
      <ul *ngIf="!loggedIn()" class="navbar-nav ml-auto">
        <li class="nav-item">
          <a class="nav-link" [routerLink]="['/register']">Register</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" [routerLink]="['/login']">Login</a>
        </li>
      </ul>
    </div>
  </div>
</nav>

最佳答案

这可以通过 display:flex; 并将相关元素包装在 divs 中来实现。我将第一个和第二个 div 设置为 flex-shrink:1;,这意味着它们收缩到 div 的内容。然后我将 flex-grow: 1; 添加到第二个 div 以填充剩余空间。

我还在输入字段中添加了 width:100%;

.flex {
  display:flex;
}
.flex > div {
  padding:0 5px;
  flex-shrink:1;
}
.flex > div:nth-child(2) {
  flex-grow: 1;
}
input {
  width:100%;
}
.collapse {
  display:none;
}
<nav class="navbar navbar-expand-md navbar-dark bg-primary">
  <div class="container flex">
    <div>
      <a class="navbar-brand" [routerLink]="['/home']">Web App</a>
    </div>
    <div>
    <form class="form-inline">
      <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
    </form>
    </div>
    <div>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#test" aria-expanded="false">        <span class="navbar-toggler-icon">Menu</span>      </button>

      <div class="collapse navbar-collapse" id="test">
        <ul *ngIf="!loggedIn()" class="navbar-nav ml-auto">
          <li class="nav-item">
            <a class="nav-link" [routerLink]="['/register']">Register</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" [routerLink]="['/login']">Login</a>
          </li>
        </ul>
      </div>
    </div>
  </div>
</nav>

关于javascript - 使我的导航栏表单搜索字段全宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56653417/

相关文章:

javascript - 显示MySQL数据库中行的统计结果并在ChartJs中显示

javascript - nodejs 在更改时重新导入文件

css - Angular 元素中与 scss 和 css 混淆以及样式预处理器选项相关的错误

javascript - react-window fixedSizeGrid 与 react-window-infinite-loader

javascript - 为什么 Html 表单不显示在图像上

html - 是否有 html "location"元素?

javascript - 如何在 <img> 元素中访问 SVG 文件的内容?

javascript - AngularJS:浏览器关闭时自动触发注销

css - 调整大小时不显示响应式侧边栏图像

html - GTM : Click trigger for button with many nested classes