如何使文本输入框占据父块内的所有剩余宽度?

use*_*039 40 css block

如何实现以下目标:

?????????????????????parent?????????????????????
? label [text-box                   ] [button] ?
? paragraph                                    ?
????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
  • label 与左边对齐
  • button 与右边对齐
  • text-box 占据父母内的所有剩余宽度
  • paragraph在左边对齐,label也必须左对齐

二者labelbutton应服从作为最大尽可能别处定义字体属性.parent在窗口中居中对齐,当然,可以有任意宽度.

请指教.

wdm*_*wdm 53

更新 [2016年10月]:Flexbox版本......

form {
  display: flex;
}
form input[type="text"] {
  flex: 1;
}
Run Code Online (Sandbox Code Playgroud)
<form>
  <label>Name</label>
  <input type="text" />
  <button>Submit</button>
</form>
<p>Lorem ipsum...</p>
Run Code Online (Sandbox Code Playgroud)

原始答案[2011年4月]:无表格CSS版本(表行为)...

<div id="parent">
    <div id="inner">
        <label>Name</label>
        <span><input id="text" type="text" /></span>
        <input id="submit" type="button" value="Submit" />
    </div>
    <p>some paragraph text</p>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS ...

#inner {
    display: table;
    width: 100%;
}
label {
    display: table-cell;
}
span {
    display: table-cell;
    width: 100%;
    padding: 0px 10px;
}
#text {
    width: 100%;
}
#submit {
    display: table-cell;
}
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/wdm954/626B2/4/


asd*_*asd 13

我不喜欢第一个回答实际使用table-cell的"table-less"版本.也不是使用实际表格的第二个答案.也没有使用硬编码宽度的第三个答案.这是使用flex的解决方案.这是最简单的:

#parent {
  display: flex;
}
input {
  flex: 1;
}
Run Code Online (Sandbox Code Playgroud)
<div id="parent">
  <label>Name</label>
  <input type="text" />
  <button>Button</button>
</div>
<div>paragraph</div>
Run Code Online (Sandbox Code Playgroud)


Tho*_*lds 9

使用表格.:DI知道人们往往讨厌桌子,但他们会在这种情况下工作......

<div id="parent">
    <table style="width:100%">
        <tr>
            <td>label</td>
            <td style="width:100%">
                <input type="text" style="width:100%">
            </td>
            <td>
                <button>clickme</button>
            </td>
        </tr>
    </table>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 爱因斯坦说,让一切尽可能简单但不简单.这是你的表解决方案的一个论据.Occam也同意,并且剃掉了讨厌的div解决方案.有些人相信处女的出生,有些则不相信表.要有信心.只是得. (2认同)