我试图创建一个类似于youtube的导航栏,其中有两个div,每个div都浮动到屏幕的两侧。在中间,我试图使搜索栏扩展以填充剩余空间。当用户调整浏览器大小时,搜索栏的宽度应收缩以允许响应式布局。我不能为我的生活弄清楚如何做到这一点。每当我能够使搜索栏响应时,它会导致右侧浮动div被推到它下面,并且不会开始折叠到它自己直到它到达屏幕的最边缘。我希望它一旦碰到正确的浮动div就开始崩溃。
这是html:
<header>
<nav id="page-nav-left" role="navigation"> </nav>
<form id="searchBar-form">
<input type="text" id="searchBar" placeholder="Search...">
</form>
<nav id="page-nav-right" role="navigation"> </nav>
</header>
CSS就在这个小提琴中:http://jsfiddle.net/L9qvpL32/
答案 0 :(得分:1)
也许是这样的? http://jsfiddle.net/L9qvpL32/2/
我只是更改了元素的顺序并更改了一些宽度:)
如果您不希望搜索栏改变位置,只需更改为
#searchBar-form {
position: relative;
overflow: hidden;
min-width: 200px;
}
答案 1 :(得分:0)
这是你要找的吗? (您需要对其进行一些优化以阻止搜索完全隐藏在较小的屏幕上) http://jsfiddle.net/zxctbynn/
<header>
<div class="left"></div>
<form id="searchBar-form" class="centre">
<input type="text" id="searchBar" placeholder="Search...">
</form>
<div class="right"></div>
</header>
header {
position: fixed;
top: 0px;
z-index: 300;
width: 100%;
height: 48px;
background-color: blue;
display: inline;
}
.left{
top: 0;
background-color: red;
width: 100px;
height:100%;
position: absolute;
}
.centre{
top: 0;
background-color: blue;
width: auto;
left: 100px;
right: 100px;
height:100%;
position: absolute;
padding: 0;
}
.centre input{
width: 100%;
}
答案 2 :(得分:0)
header {
position: fixed;
top: 0px;
z-index: 300;
width: 100%;
height: 48px;
background-color: blue;
float:left;
}
form{
width:80%;
float:left;
}
#page-nav-left {
display: inline-block;
height: 100%;
width: 20%;
margin: 0 auto;
padding: 0px;
float: left;
background-color: red;
}
#page-nav-right {
display: inline-block;
height: 100%;
width: 20%;
margin: 0 auto;
padding: 0px;
float: left;
background-color: red;
}
#searchBar-form {
position: relative;
overflow: hidden;
width:60%;
}
#searchBar {
padding: 4px 15px;
background-color: white;
width: 100%;
}
#searchBar-button {
float: right;
padding: 4px 15px;
border: 0px solid #207cca;
color: black;
}
我假设这是你想要的。您以像素为单位设置导航。始终将宽度设置为%以表示响应性。 http://jsfiddle.net/L9qvpL32/1/
答案 3 :(得分:0)
您应该尝试使用flexbox
。使用flexbox,您可以在同一行中浮动尽可能多的div,并且它们也会响应父级和彼此的响应。
您还可以设置,哪个元素应填充剩余空间,以及哪个元素宽度固定为绝对值。
您可以在此处找到灵活的Flexbox教程: http://css-tricks.com/snippets/css/a-guide-to-flexbox/
header {
display: -webkit-flex;
display: flex;
position: fixed;
top: 0px;
z-index: 300;
width: 100%;
height: 48px;
background-color: blue;
}
#page-nav-left {
-webkit-flex-grow: 0;
flex-grow: 0;
-webkit-flex-shrink: 0;
flex-shrink: 0;
width: 100px;
background-color: red;
}
#page-nav-right {
-webkit-flex-grow: 0;
flex-grow: 0;
-webkit-flex-shrink: 0;
flex-shrink: 0;
width: 100px;
background-color: red;
}
#searchBar-form {
-webkit-flex-grow: 1;
flex-grow: 1;
-webkit-flex-shrink: 1;
flex-shrink: 1;
}
#searchBar {
width: 100%;
max-width: 400px;
}
#searchBar-button {
padding: 4px 15px;
border: 0px solid #207cca;
color: black;
}
<header>
<nav id="page-nav-left" role="navigation"> </nav>
<form id="searchBar-form">
<input type="text" id="searchBar" placeholder="Search...">
</form>
<nav id="page-nav-right" role="navigation"> </nav>
</header>