停止输入突破容器

时间:2017-01-22 21:39:13

标签: html css css3

我正在尝试在表单上进行一些预输入,并且我希望输入字段扩展到容器div的末尾。问题是输入字段似乎由于预输入文本的长度而扩展到容器div之外。

.container {
  width: 70%;
}
.input-field {
  display: inline-block;
  white-space: nowrap;
  vertical-align: bottom;
  background: #fff;
  position: relative;
  vertical-align: middle;
  width: 100%;
  min-width: 16px;
  border: 1px solid #ddd;
}
.input-field .addon {
  padding-left: 8px;
  padding-right: 8px;
  padding-top: 2px;
  padding-bottom: 2px;
  text-align: center;
  text-shadow: 0 1px 0 #fff;
  background: #f0f0f0;
}
.input-field input {
  padding-left: 5px;
  padding-top: 0;
  padding-bottom: 0;
  margin: 0;
  border: 0;
  outline: none;
  background: transparent;
  resize: none;
  width: 100%;
}
.input-field:hover {
  border: 1px solid #05c9f0;
}
<div class="container">
  <div class="input-field">
    <span class="addon">some preinput</span>
    <input id="" type="text" name="" value="test text" />
  </div>
</div>

此处的另一个例子是:http://codepen.io/anon/pen/wgdErO

如果您尝试示例代码,您会注意到您可以点击我想要结束的输入框。

有关修复的任何想法吗?

3 个答案:

答案 0 :(得分:3)

尝试使用flexbox布局。

.container {
  width: 300px;
}
.input-field {
  background: #fff;
  border: 1px solid #ddd;
  display: flex;
  align-items: center;
}
.input-field .addon {
  padding: 2px 8px;
  text-shadow: 0 1px 0 #fff;
  background: #f0f0f0;
}
.input-field input {
  padding: 0 4px;
  margin: 0;
  border: 0;
  outline: none;
  background: transparent;
  resize: none;
  flex: 1;
}
.input-field:hover {
  border: 1px solid #05c9f0;
}
<div class="container">
  <div class="input-field">
    <span class="addon">some preinput</span>
    <input id="" type="text" name="" value="test text" />
  </div>
</div>
<img src="//dummyimage.com/300x50">

答案 1 :(得分:0)

只需将输入宽度从100%减小到较低的值,如99.7%,这样就可以了:

&#13;
&#13;
.container {
  width: 70%;
  border: 1px solid red;
}
.input-field {
  display: inline-block;
  white-space: nowrap;
  vertical-align: bottom;
	background: #fff;
	position: relative;
	vertical-align: middle;
	width: 99.7%;  
	min-width: 16px;
	border: 1px solid #ddd;
}
.input-field .addon {
	padding-left: 8px;
	padding-right: 8px;
	padding-top: 2px;
	padding-bottom: 2px;
	text-align: center;
	text-shadow: 0 1px 0 #fff;
	background: #f0f0f0;
}
.input-field input {
  padding-left: 5px;
  padding-top: 0;
  padding-bottom: 0;
  margin: 0;
  border: 0;
  outline: none;
  background: transparent;
  resize: none;
  width: 100%;
}
.input-field:hover {border: 1px solid #05c9f0;}
&#13;
<div class="container">
  <div class="input-field">
    <span class="addon">some preinput</span>
    <input id="" type="text" name="" value="test text" />
  </div>
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

你可以像这样计算宽度! width: calc(100% - 125px);而不是将其设置为100%