1

我正在尝试实现响应式搜索栏的特定外观,其中显示搜索输入,选择过滤器选项并在一行中提交按钮。提交按钮和选择分别定义了 44px 和 110px 的宽度,我希望搜索输入字段占据剩余的可用空间,因此我使用width: calc(100% - 154px);. 但它没有按预期工作。请在此处查看示例https://jsfiddle.net/t97fqqxu/

HTML:

<div id="main-search">
    <form>
        <input type="text" placeholder="Search.." />
        <select>
            <option>Option</option>
        </select>
        <input type="submit" value="Submit"/>
    </form>
</div>

CSS

#main-search {
    background-color: @palette-white;
}
#main-search form {
    width: 100%;
    background: green;
}

#main-search input[type="text"] {
    width: calc(100% - 154px);
}

#main-search select {
    width: 110px;
}

#main-search input[type="submit"] {
    text-indent: -9999px;
    width: 44px;
    height: 44px;
}

编辑:我正在利用 bootstrap 3 的盒子模型,因此无论边距和填充,宽度将始终为 44px 和 110px

4

1 回答 1

2

你没有考虑borderinput元素。默认情况下,border/padding被添加到元素的宽度/高度。换句话说,即使你给一个元素一个宽度110px,你仍然需要考虑元素padding/ border

更新示例

您可以删除边框,也可以box-sizing: border-boxborder元素的宽度/高度计算中使用:

input[type="text"] {
  border: none;
}

或者..

input[type="text"] {
  box-sizing: border-box;
}

此外,值得指出的是inline元素尊重标记中的空白,您也需要将其删除。请参阅上面的更新示例。

于 2015-04-29T14:51:51.083 回答