css calc() 未产生预期结果
css calc() not producing expected result
我正在尝试实现响应式搜索栏的特定外观,我在其中显示搜索输入、select 过滤器选项和一行中的提交按钮。提交按钮和 select 分别定义了 44px 和 110px 的宽度,我希望搜索输入字段占用其余可用 space,因此我使用 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
您没有考虑 input
元素上的 border
。默认情况下,border
/padding
被添加到元素的 width/height。换句话说,即使你给一个元素宽度110px
,你仍然需要考虑元素padding
/border
.
您可以删除边框,或使用 box-sizing: border-box
来计算元素的 width/height 计算中的 border
:
input[type="text"] {
border: none;
}
或..
input[type="text"] {
box-sizing: border-box;
}
此外,值得指出的是 inline
个元素 respect the whitespace in the markup,您也需要将其删除。请参阅上面的更新示例。
我正在尝试实现响应式搜索栏的特定外观,我在其中显示搜索输入、select 过滤器选项和一行中的提交按钮。提交按钮和 select 分别定义了 44px 和 110px 的宽度,我希望搜索输入字段占用其余可用 space,因此我使用 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
您没有考虑 input
元素上的 border
。默认情况下,border
/padding
被添加到元素的 width/height。换句话说,即使你给一个元素宽度110px
,你仍然需要考虑元素padding
/border
.
您可以删除边框,或使用 box-sizing: border-box
来计算元素的 width/height 计算中的 border
:
input[type="text"] {
border: none;
}
或..
input[type="text"] {
box-sizing: border-box;
}
此外,值得指出的是 inline
个元素 respect the whitespace in the markup,您也需要将其删除。请参阅上面的更新示例。