'Search bar below search button - on click

I am developing webpages for angular 4 application using bootstrap 3.

Trying to add a search button (top right/top left) which will expand in next row on click. Refer top right corner search button here.

<div class="row">
 <div class="col-xs-3">
  <form id="demo-2" style="margin-left: 10px">
    <input type="search" placeholder="Search..">
  </form>
 </div>
</div>

css

input {
  outline: none;
}
input[type=search] {
  -webkit-appearance: textfield;
  -webkit-box-sizing: content-box;
  font-family: inherit;
  font-size: 100%;
}
input::-webkit-search-decoration,

input[type=search] {
  background: #ededed url(https://static.tumblr.com/ftv85bp/MIXmud4tx/search-icon.png) no-repeat 9px center;
  border: solid 1px #ccc;
  padding: 7px 9px 7px 17px;
  width: 55px;

  border-radius: 1em;

  -webkit-transition: all .5s;
  -moz-transition: all .5s;
  transition: all .5s;
}
input[type=search]:focus {
  width: 170px;
  background-color: #fff;

  -webkit-box-shadow: 0 0 5px rgba(109,207,246,.5);
  -moz-box-shadow: 0 0 5px rgba(109,207,246,.5);
  box-shadow: 0 0 5px rgba(109,207,246,.5);
}

#demo-2 input[type=search] {
  width: 15px;
  padding-left: 10px;
  color: transparent;
  cursor: pointer;
}
#demo-2 input[type=search]:hover {
  background-color: #fff;
}
#demo-2 input[type=search]:focus {
  width: 200px;
  padding-left: 32px;
  color: #000;
  background-color: #fff;
  cursor: auto;
  color: black;
}
#demo-2 input:-moz-placeholder {
  color: transparent;
}
#demo-2 input::-webkit-input-placeholder {
  color: transparent;
}

This gives me search bar expand in same row. I've tried to get examples for the same. But all of them talk about expanding same row.

NOTE: The search bar & search button will be in same row for desktop view. Similar to this. Will change responsively to mobile view.

Thanks in advance. Suggestions are most welcome.



Solution 1:[1]

The search button doesn't really get expanded on the next row, it toggles a new element that's positioned underneath it. Check out the examples below to see what I mean.

Option 1 (with simple JQuery code)

$(document).ready(function(){
    $(".toggle-search").click(function(){
        $(".search-input").toggle();
    });
});
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js"></script>


<button class="toggle-search"> Search </button>
<div class="container">
  <form class="row search-input" id="demo-2" style="margin-left: 10px">
    <input class="col-lg-12" type="search" placeholder="Search..">
  </form>
</div>

Option 2 (doesn't include additional JQuery Code but still requires the JQuery Library)

<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js"></script>


<button type="button" class="btn btn-info" data-toggle="collapse" data-target=".search-input"> Search </button>
<div class="container collapse search-input">
  <form class="row" id="demo-2" style="margin-left: 10px">
    <input class="col-lg-12" type="search" placeholder="Search..">
  </form>
</div>

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1