带按钮的响应全宽输入

时间:2016-10-23 23:27:12

标签: html css

我有小提琴:https://jsfiddle.net/ufLpqdtj/

我的问题是试图让我的搜索框和按钮始终在页面上全宽,而不管它运行的是什么设备。

在Javascript中,我总是可以使文本框的宽度减去100%减去按钮的像素宽度(按钮总是大小相同),但我觉得好像我遗漏了一些东西,并且它可以在CSS中原生地完成。

有任何想法或建议吗?

#commonSearchContainer {
  display: block;
  clear: both;
  width: 100%;
  position: relative;
}
#commonSearchTerm {
  width: 100%;
  margin: 25px 0px 0px 0px;
  padding: 5px;
  border: 1px solid #999999;
  height: 35px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
.common-search-term-wrapper {
  width: 90%;
  display: inline-block;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
.common-search-button {
  background-color: #E9700D;
  border: 1px solid #ccc;
  display: inline-block;
  margin: 25px 0px 0px 10px;
  width: 80px;
  color: #fff;
  padding: 7px;
  font-style: italic;
  cursor: pointer;
}
<div id="searchSection" class="common-search-section">
  <div class="common-search-term-wrapper">
    <input id="commonSearchTerm" type="text" autocomplete="off" class="common-search-term">
  </div>
  <div id="commonSearchSubmit" class="common-search-button">
    Search
    <div style="clear: both;"></div>
  </div>
</div>

2 个答案:

答案 0 :(得分:1)

我通常为这种布局做的是在元素周围创建一个父容器(就像你一样)并给它position: relativewidth: 100%

然后我在内部元素上使用position: absolutedisplay: inline-block。设置固定大小元素的宽度,并使用leftright定位所有元素。

在您的情况下,它会是这样的:https://jsfiddle.net/ufLpqdtj/1/

答案 1 :(得分:1)

好吧,你不应该把div用作按钮。有html元素。

如果正确理解了你想要达到的目标......

form {
  width: 100%;
  display: inline-flex;
  justify-content: center;
  }

#commonSearchTerm {
  width: 80%;
}
#searchButton {
  width: 80px;
  border-radius: 0;
  background-color: red;
  border: none;
  padding: 2px;
  color: white;
}
<form >
  <input id="commonSearchTerm" type="text" autocomplete="off" class="common-search-term">
  <input id="searchButton" type="submit">
</form>

这是使用flexbox,在创建响应式内容时更灵活。