在小屏幕上将 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;
}

JSFIDDLE

.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