Bootstrap 4 - How to Make 100% Width Search Input in Navbar

Bootstrap 4 - how to make 100% width search input in Navbar?

Updated 2019

As of Bootstrap 4 the Navbar is flexbox so creating a full-width search input is easier. You can simply use w-100 and d-inline utility classes:

<form class="mx-2 my-auto d-inline w-100">
<div class="input-group">
<input type="text" class="form-control" placeholder="...">
<span class="input-group-append">
<button class="btn btn-outline-secondary" type="button">GO</button>
</span>
</div>
</form>

http://www.codeply.com/go/sbfCXYgqoO

Here's another example with the search input outside of the collapsing navbar:

<!-- search input not in navbar collapse -->
<nav class="navbar navbar-expand-md navbar-dark bg-dark">
<div class="d-flex flex-grow-1">
<a href="/" class="navbar-brand">Codeply</a>
<form class="mr-2 my-auto w-100 d-inline-block order-1">
<div class="input-group">
<input type="text" class="form-control border border-right-0" placeholder="Search...">
<span class="input-group-append">
<button class="btn btn-outline-light border border-left-0" type="button">
<i class="fa fa-search"></i>
</button>
</span>
</div>
</form>
</div>
<button class="navbar-toggler order-0" type="button" data-toggle="collapse" data-target="#navbar7">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse flex-shrink-1 flex-grow-0 order-last" id="navbar7">
<ul class="navbar-nav">
..
</ul>
</div>
</nav>

http://www.codeply.com/go/sbfCXYgqoO

And, finally another example that varies the width of the search on desktop/mobile (only full width on mobile) from my answer here


Bootstrap 3 (original answer)

You can use the text-truncate hack on the last navbar li like this..

<li class="text-truncate">
<form class="input-group">
<input class="form-control" name="search" placeholder="Search Here" autocomplete="off" autofocus="autofocus" type="text">
<div class="input-group-btn">
<button class="btn btn-outline-success" type="submit">Search</button>
</div>
</form>
</li>

In Bootstrap 4, text-truncate will set:

   overflow: hidden;
white-space: nowrap;

This enables the search form to fill the remaining width and not wrap.

Demo http://www.codeply.com/go/22naSu3c0E

Another option is to use table-cell:

<form>
<div class="table-cell">   </div>
<div class="table-cell fill-width">
<input class="form-control" name="search" placeholder="Search Here" autocomplete="off" autofocus="autofocus" type="text">
</div>
<div class="table-cell">
<button class="btn btn-outline-success" type="submit">Search</button>
</div>
</form>

http://www.codeply.com/go/JdbPvotSXg

Bootstrap, make search bar take full width when nav-bar is collapsed

I think you are trying to change CSS of a bootstrap element try using !important tag with the class Name ,

.quick-google
{
min-width: 250px;
width: 100% !important;
}

Bootstrap 4 – navbar search form min width

Found acceptable solution - key is remove flex-wrap:wrap from css, for example with @media(min-width:992px), search form must have "display:flex;flex-basis:100%" or "width:100%". This will move search in second line.

Bootstrap 4 - widening a navbar's inline form input

Use the utility classes such as d-inline w-100 as needed. If you don't want the input to be full width, use w-50, w-75, etc...

<nav class="navbar navbar-expand-md navbar-light bg-faded">
<a href="/" class="navbar-brand">Brand</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<!-- links -->
<form class="mx-2 my-auto d-inline w-100" action="">
<div class="input-group">
<input name="search" class="form-control" type="search" placeholder="Search" aria-label="Search">
<div class="input-group-append">
<button class="btn btn-burnt-orange my-2 my-sm-0" type="button"><i class="fas fa-search"></i></button>
</div>
</div>
</form>
</div>
</nav>

Demo: https://www.codeply.com/go/SW2f1PJUA3


Also see: Bootstrap 4 — how to make 100% width of the search input in navbar?

Bootstrap 4 - making centered search form take full width on small screens only

The sizing utils like w-100 are not responsive. Use a column (eg. col-md-3) to set the width instead...

https://www.codeply.com/go/FVo4F81ShR

<nav class="navbar navbar-expand-md navbar-light bg-light">
<a href="/" class="navbar-brand">Codeply</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCodeply">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse" id="navbarCodeply">
<form class="mx-2 my-auto d-inline mx-auto col-md-3">
<div class="input-group">
<input type="text" class="form-control" placeholder="...">
<span class="input-group-btn">
<button class="btn btn-outline-secondary" type="button">GO</button>
</span>
</div>
</form>
<ul class="navbar-nav">
<li class="nav-item dropdown">
<a class="nav-link" href="http://example.com" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
...
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdownMenuLink">
...
</div>
</li>
</ul>
</div>
</nav>

How to add toggle full width search box to the Navbar in Bootstrap 4?

Change the Navbar as needed for Bootstrap 4. Notice the structure has changed. It now uses flexbox, the input-group classes, nav-item, etc.. are all different...

I used this tool to convert the Navbar structure from 3 to 4. Then adjust the input-group classes...

<nav class="navbar navbar-light bg-light fixed-top navbar-expand-sm" role="navigation">
<div class="container">
<button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> <span class="sr-only">Toggle navigation</span> ☰
</button> <a class="navbar-brand" href="#">Brand</a>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li class="active nav-item"><a href="#" class="nav-link">Link</a>
</li>
<li class="nav-item"><a href="#" class="nav-link">Link</a>
</li>
<li class="dropdown nav-item"> <a href="#" class="dropdown-toggle nav-link" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
<ul class="dropdown-menu">
<li class="dropdown-item"><a href="#">Action</a>
</li>
</ul>
</li>
</ul>
<ul class="nav navbar-nav ml-auto">
<li class="nav-item"><a href="#" class="nav-link">Link</a>
</li>
<li class="dropdown nav-item"> <a href="#" class="dropdown-toggle nav-link" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
<ul class="dropdown-menu">
<li class="dropdown-item"><a href="#">Action</a>
</li>
<li class="dropdown-item"><a href="#">Another action</a>
</li>
<li class="dropdown-item"><a href="#">Something else here</a>
</li>
<li class="divider dropdown-item"></li>
<li class="dropdown-item"><a href="#">Separated link</a>
</li>
</ul>
</li>
</ul>
<form class="d-flex" role="search">
<div class="input-group">
<input type="text" class="form-control" placeholder="Search">
<div class="input-group-append">
<button type="reset" class="btn btn-secondary">
<span class="fa fa-remove">
<span class="sr-only">Close</span>
</span>
</button>
</div>
<div class="input-group-append">
<button type="submit" class="btn btn-secondary">
<span class="fa fa-search">
<span class="sr-only">Search</span>
</span>
</button>
</div>
</div>
</form>
</div>
</div>
</nav>

You'll also need to modify the CSS. The padding for the buttons, height, etc..

@media (min-width: 768px) {
.navbar-collapse {
padding-top: 0px !important;
padding-right: 38px !important;
}
.navbar-collapse form[role="search"] {
width: 38px;
}
.navbar-collapse form[role="search"] input {
font-size: 15pt;
opacity: 0;
display: none;
}
.navbar-collapse form[role="search"].active {
width: 100%;
}
.navbar-collapse form[role="search"].active button,
.navbar-collapse form[role="search"].active input {
display: table-cell;
opacity: 1;
}
}

https://www.codeply.com/go/mLnFOWZqVo

How to stretch the searchbox in a navbar using bootstrap 5?

Just use w-100 on the containing form...

<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#"><img src="//via.placeholder.com/180x52" alt="Brand image" width="180" height="52"></a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<form class="d-flex ms-auto me-auto border w-100">
<input class="form-control" id="searchbox" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
<ul class="navbar-nav ms-auto mb-2 mb-lg-0 d-flex">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Login</a>
</li>
</ul>
</div>
</div>
</nav>

Codeply

Making my navbar form search field full width

This can be achieved with display:flex; and wrapping the relevant elements in divs. I set the first and second div to flex-shrink:1;, which means they shrink to the content of the div. Then I have added flex-grow: 1;to the second div so it fills the remaining space.

I also added width:100%; to the input field.

.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>


Related Topics



Leave a reply



Submit