You can realize this layout using CSS table-cells.
Modify your HTML slightly as follows:
<div id="header"> <div class="container"> <div class="logoBar"> <img src="http://placehold.it/50x40" /> </div> <div id="searchBar"> <input type="text" /> </div> <div class="button orange" id="myAccount">My Account</div> <div class="button red" id="basket">Basket (2)</div> </div> </div>
Just remove the wrapper element around the two .button
elements.
Apply the following CSS:
#header { background-color: #323C3E; width:100%; } .container { display: table; width: 100%; } .logoBar, #searchBar, .button { display: table-cell; vertical-align: middle; width: auto; } .logoBar img { display: block; } #searchBar { background-color: #FFF2BC; width: 90%; padding: 0 50px 0 10px; } #searchBar input { width: 100%; } .button { white-space: nowrap; padding:22px; }
Apply display: table
to .container
and give it 100% width.
For .logoBar
, #searchBar
, .button
, apply display: table-cell
.
For the #searchBar
, set the width to 90%, which force all the other elements to compute a shrink-to-fit width and the search bar will expand to fill in the rest of the space.
Use text-align and vertical-align in the table cells as needed.
See demo at: http://jsfiddle.net/audetwebdesign/zWXQt/