I want to create a layout as shown below:

Like this layout, this is my headline. The black rectangle is some fixed width components (buttons, links ...), and the red rectangle is my search form.
I want when the user resizes the browser windows, the search form will be smaller (in width), a horizontal scroll bar will appear to some value. Maybe the tricky part: I don't know how to solve the "auto resize" in css.
Here is my sample code:
my HTML:
<html class=""> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Title Here</title> <link type="text/css" rel="stylesheet" href="css/application.css"> <script src="javascripts/pace.js"></script> </head> <body> <header class="page-head"> <div class="wrapper"> <div class="logo"></div> <form class="form-search" action="#" onsubmit="return false" method="get" name="search_form"> <div class="search-box"></div> </form> <nav class="site-nav"> <span><a href="/" class="site-nav__home"></a></span> <div class="site-nav__item">Home</div> <div class="site-nav__item">Notifications</div> <div class="site-nav__item">Profile</div> <div class="site-nav__button">Add Question</div> </nav> </div> </header> </body> </html>
my CSS:
.html { box-sizing: border-box; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } *, *:before, *:after { box-sizing: inherit; } .page-head { position: fixed; top: 0; left: 0; height: 45px; width: 100%; font-size: 14px; color: #fff; } .page-head.wrapper { width: 1020px; margin: 0 auto; border-bottom: 1px solid #ddd; box-shadow: 0 3px 5px -3px rgba(200, 200, 200, 0.3); height: 45px; display: flex; flex-direction: row; } form { display: block; } .logo { width: 45px; height: 45px; background: red; } .form-search { margin: 0; float: none; position: static; height: 27px; background-image: url(../images/search.png); } .search-box { border-radius: 2px; -webkit-font-smoothing: antialiased; margin-top: 0; padding: 5px; padding-left: 26px; float: none; width: 100%; height: 27px; font-size: 15px; line-height: normal; background: #eee; } .site-nav { display: flex; flex-direction: row; z-index: 1; margin-left: 20px; } .site-nav__item { display: block; height: 45px; color: #666; padding: 0 16px; background-repeat: no-repeat; background-position: 10px center; border-bottom: 1px solid transparent; }
Please tell me how to create this layout using CSS. And if possible, how to do it using Flexbox?
Thanks:)
source share