我已经习惯了这个hack在input
:
<div class="l_standard staticPlaceholder">
<label for="alias" style="cursor: text;">site.com/</label>
<input type="text" name="alias" id="alias" maxlength="15" />
</div>
但我需要为width
手动设置input
,以防止在调整大小时破坏此构造。我怎样才能使input
像“橡皮”一样?
以下是一个示例 - http://jsfiddle.net/qKfqa/输入字段下降并制动构造。
感谢。
答案 0 :(得分:1)
演示: http://jsfiddle.net/qKfqa/7/(我已经看到了框边框以展示布局;调整窗格大小以查看“橡胶”行为)。
这取决于一点点黑客,即将一个单元格设置为1px宽并依赖display:table-cell
的行为来强制它达到所需的宽度。
我添加了额外的标记作为“单元格”;可以用更少的元素来做到这一点。
.staticPlaceholder {
border: 1px solid #ccc;
display: inline-block;
white-space: nowrap;
padding: 2px;
width: 50%;
display: table;
}
.staticPlaceholder > DIV {
display: table-cell;
}
.staticPlaceholder > DIV:first-child {
width: 1px;
}
使用IE8 +,Chrome,FF进行测试
演示: http://jsfiddle.net/qKfqa/5/
不依赖于占位符文本的宽度,即它可以是您想要的任何内容。输入的宽度也不重要。
.staticPlaceholder {
border: 1px solid #ccc;
/* important part */
display: inline-block;
white-space: nowrap;
}
.staticPlaceholder input {
border: 0;
outline: 0;
/* width can be anything you want */
width: 200px;
}
如果它正常工作,它应该如下:
使用IE8 +,Chrome,FF进行测试
答案 1 :(得分:0)
让.staticPlaceHolder
更宽。我将其更改为width: 300px;
:http://jsfiddle.net/qKfqa/1/
答案 2 :(得分:0)
width: 100%;
将使其适合父div的宽度,但border / padding / margin可能会将其搞砸一些,因此您可能还想添加box-sizing: border-box
。