在小屏幕上将 navbar-header 中的表单与 Bootstrap 对齐
Align a form in navbar-header on small screens with Bootstrap
用下面的代码,在"middle screen"上,结果是OK的。
但在小屏幕(智能手机)上,情况并非如此。
我希望输入和提交按钮(放大镜)在同一行上。
我该怎么做?
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Diko Responsive</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<form class="navbar-form navbar-right" action="index.php" method="get">
<div class="form-group" >
<input id="terme" name="terme" placeholder="Veuillez saisir un terme" class="form-control input-xs" type="search">
<button type="submit" class="btn btn-info"><span class="glyphicon glyphicon-search"></span></button>
</div>
</form>
</div>
</div>
</nav>
谢谢。
编辑: 我在@NiklasMH
的建议后添加了这个 CSS 文件
@media (max-width : 768px){
.form-group input {
width: calc(70% - 32.5px);
}
.form-group button {
width: 40px;
}
}
但是如您所见,两者仍然没有对齐。
我不知道 twitter-bootstrap 有那么好,所以这个答案更多的是关于你可以对 CSS.
做些什么
不好的做法
有人说这是不好的做法,但您可以使用 table 将它们对齐在同一行。然后你也可以使左列或右列固定宽度,如:
td:last-child {
width: 32px;
}
良好做法
或者您可以使用 CSS 中的计算值,现在已得到广泛支持(Opera Mini 除外 - 参考 caniuse.com),例如:
.form-group input {
width: calc(100% - 44px); /* Minus a little more (4px) than the button-width */
}
.form-group button {
width: 40px;
}
请记住,填充会使元素变大并受力更多 space,因此将 box-sizing 设置为 border-box(默认内容框)以避免这种情况:
.form-group input, .form-group button {
box-sizing: border-box;
}
.form-group input, .form-group button {
box-sizing: border-box;
}
.form-group input {
width: calc(100% - 44px);
max-width: 160px;
}
.form-group button {
width: 40px;
}
<div class="form-group">
<input placeholder="text"/>
<button>btn</button>
</div>
你快到了。你只是忘了打电话给 class=input-group
您无需在此处添加其他媒体查询。
HTML
<div class="input-group">
<input id="terme" name="terme" placeholder="Veuillez saisir un terme" class="form-control input-xs" type="search">
<span class="input-group-btn">
<button class="btn btn-info" type="button"><span class="glyphicon glyphicon-search"></span></button>
</span>
</div>
这里是DEMO
用下面的代码,在"middle screen"上,结果是OK的。
但在小屏幕(智能手机)上,情况并非如此。
我希望输入和提交按钮(放大镜)在同一行上。
我该怎么做?
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Diko Responsive</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<form class="navbar-form navbar-right" action="index.php" method="get">
<div class="form-group" >
<input id="terme" name="terme" placeholder="Veuillez saisir un terme" class="form-control input-xs" type="search">
<button type="submit" class="btn btn-info"><span class="glyphicon glyphicon-search"></span></button>
</div>
</form>
</div>
</div>
</nav>
谢谢。
编辑: 我在@NiklasMH
的建议后添加了这个 CSS 文件@media (max-width : 768px){
.form-group input {
width: calc(70% - 32.5px);
}
.form-group button {
width: 40px;
}
}
但是如您所见,两者仍然没有对齐。
我不知道 twitter-bootstrap 有那么好,所以这个答案更多的是关于你可以对 CSS.
做些什么不好的做法
有人说这是不好的做法,但您可以使用 table 将它们对齐在同一行。然后你也可以使左列或右列固定宽度,如:
td:last-child {
width: 32px;
}
良好做法
或者您可以使用 CSS 中的计算值,现在已得到广泛支持(Opera Mini 除外 - 参考 caniuse.com),例如:
.form-group input {
width: calc(100% - 44px); /* Minus a little more (4px) than the button-width */
}
.form-group button {
width: 40px;
}
请记住,填充会使元素变大并受力更多 space,因此将 box-sizing 设置为 border-box(默认内容框)以避免这种情况:
.form-group input, .form-group button {
box-sizing: border-box;
}
.form-group input, .form-group button {
box-sizing: border-box;
}
.form-group input {
width: calc(100% - 44px);
max-width: 160px;
}
.form-group button {
width: 40px;
}
<div class="form-group">
<input placeholder="text"/>
<button>btn</button>
</div>
你快到了。你只是忘了打电话给 class=input-group
您无需在此处添加其他媒体查询。
HTML
<div class="input-group">
<input id="terme" name="terme" placeholder="Veuillez saisir un terme" class="form-control input-xs" type="search">
<span class="input-group-btn">
<button class="btn btn-info" type="button"><span class="glyphicon glyphicon-search"></span></button>
</span>
</div>
这里是DEMO