如何在不指定显式宽度的情况下使文本输入仅与其父 div 一样宽?
How can I make a text input only as wide as its parent div, without specifying an explicit width?
我有一个容器 div,有两个子 div,一个是文本框,另一个是它下面的标签,如下所示:
.container { display:inline-block; }
<div class="container">
<div class="input-container"><input type="text" /></div>
<div class="label">Some text here</div>
</div>
我希望容器的宽度只需要适合标签 div,并且我希望文本框的宽度相同。
如果我为容器使用明确的宽度,我可以为输入设置 width:100%
,它工作正常。但是,这不是一个选项,因为我的内容的宽度会有所不同。
无论我做什么,文本框似乎都有一个最小宽度 "wants",所以整个容器都会打开。
如何使输入仅与包含 div 一样宽,其宽度被收缩包装以匹配文本?换句话说,在上面的示例中,我希望文本 "Some text here" 指示文本框和容器的宽度。
首先,父级 div 需要它的宽度。
那么有两个选择。
<div class="container">
<div class="input-container" style="width:200px"><input type="text" style="width:100%"/></div>
<div class="label">Some text here</div>
</div>
<div class="container">
<div class="input-container" style="width:200px"><input id="input-box" type="text" /></div>
<div class="label">Some text here</div>
</div>
<script>
var parentWidth = document.getElementsByClassName("input-container")[0].style.width;
document.getElementById("input-box").style.width = parentWidth;
</script>
如果您可以使用 jquery,我会执行以下操作:
$('.label').each(function() {
//get width of label
var labelWidth = $(this).width();
//apply that width to the input before it
$(this).prev().children('input').css('width', labelWidth);
});
.container {
display: inline-block;
}
.label {
white-space: nowrap;
display: inline-block;
}
.container input {
display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<div class="input-container">
<input type="text" />
</div>
<div class="label">Some text here</div>
</div>
在输入框上设置绝对位置并设置 100% 宽度的想法,因此它始终根据标签文本的长度获得相同的宽度。
演示: http://jsfiddle.net/43jm73gs/1/
.container {
display:inline-block;
}
.input-container {
position: relative;
margin-bottom: 10px;
}
.input-container:after {
content: "[=10=]a0"; /* */
}
.input-container input {
position: absolute;
width: 100%;
box-sizing: border-box;
}
我有一个容器 div,有两个子 div,一个是文本框,另一个是它下面的标签,如下所示:
.container { display:inline-block; }
<div class="container">
<div class="input-container"><input type="text" /></div>
<div class="label">Some text here</div>
</div>
我希望容器的宽度只需要适合标签 div,并且我希望文本框的宽度相同。
如果我为容器使用明确的宽度,我可以为输入设置 width:100%
,它工作正常。但是,这不是一个选项,因为我的内容的宽度会有所不同。
无论我做什么,文本框似乎都有一个最小宽度 "wants",所以整个容器都会打开。
如何使输入仅与包含 div 一样宽,其宽度被收缩包装以匹配文本?换句话说,在上面的示例中,我希望文本 "Some text here" 指示文本框和容器的宽度。
首先,父级 div 需要它的宽度。
那么有两个选择。
<div class="container">
<div class="input-container" style="width:200px"><input type="text" style="width:100%"/></div>
<div class="label">Some text here</div>
</div>
<div class="container">
<div class="input-container" style="width:200px"><input id="input-box" type="text" /></div>
<div class="label">Some text here</div>
</div>
<script>
var parentWidth = document.getElementsByClassName("input-container")[0].style.width;
document.getElementById("input-box").style.width = parentWidth;
</script>
如果您可以使用 jquery,我会执行以下操作:
$('.label').each(function() {
//get width of label
var labelWidth = $(this).width();
//apply that width to the input before it
$(this).prev().children('input').css('width', labelWidth);
});
.container {
display: inline-block;
}
.label {
white-space: nowrap;
display: inline-block;
}
.container input {
display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<div class="input-container">
<input type="text" />
</div>
<div class="label">Some text here</div>
</div>
在输入框上设置绝对位置并设置 100% 宽度的想法,因此它始终根据标签文本的长度获得相同的宽度。
演示: http://jsfiddle.net/43jm73gs/1/
.container {
display:inline-block;
}
.input-container {
position: relative;
margin-bottom: 10px;
}
.input-container:after {
content: "[=10=]a0"; /* */
}
.input-container input {
position: absolute;
width: 100%;
box-sizing: border-box;
}