CSS:强制textarea占用所有可用区域

时间:2011-06-24 17:07:20

标签: html css

我正在处理一个水平布局的表单:

 <div id="container">
  <label for="ta">description</label>
  <textarea id="ta" name="ta" cols="50" rows="10"></textarea>
 </div>

问题在于我想要的是textarea占用标签在同一行留下的所有可用空间。如果我尝试使用 width = 100%,它会跳转到下一行:

div * {
    vertical-align: middle;
}
textarea {
    width: 100%;
    height: 300px;
}

是否有任何想法实现它而没有为每个标签分配固定空间?

5 个答案:

答案 0 :(得分:13)

喜欢这个? http://jsfiddle.net/4QbMr/

<div id="container">
    <label for="ta">description</label>
    <div class="twrap"><textarea id="ta" name="ta" cols="50" rows="10"></textarea></div>
</div>

label {
    float: left
}
.twrap {
    overflow: hidden;
    padding: 0 4px 0 12px
}
textarea {
    width: 100%;
    height: 300px;
}

答案 1 :(得分:2)

对于CSS的表格式行为,display: table is your friend

#container {
    display: table;
    width: 100%;
}
#container label, #container textarea {
    display: table-cell;
    vertical-align: top;
}
#container textarea {
    width: 100%;
    height: 300px;
}

请注意,如果您指定colsrows属性,它们将覆盖您的CSS。

答案 2 :(得分:1)

http://jsfiddle.net/N9hvU/27/

我认为这是你正在寻找的行为。即使我更喜欢使用div / spans进行元素定位;表格具有独特的行为(根据我的经验;不知道这是否符合w3规范)不允许项目进入下一行;无论他们变得多大。

因此,通过将表格行宽度设置为100%,并将单元格宽度与文本区域设置为100%,文本区域将使用任何可用宽度。

<div id="container">
    <table>
        <tr style="width:100%;">
            <td>
                <label for="ta">description</label>
            </td>
            <td style="width:100%;">
                <textarea id="ta" name="ta"></textarea>
            </td>
        </tr>
    </table>
</div>

答案 3 :(得分:0)

使用小于100%的百分比并省略textarea.try中的cols http://jsfiddle.net/bingjie2680/Bw4MR/

更新:试试这个:http://jsfiddle.net/bingjie2680/Bw4MR/3/您需要使用表来完成这项工作。

答案 4 :(得分:0)

您需要指定标签的宽度。 喜欢

  

标签{宽度:20%; } textarea {width:80%; }

我会在div和textarea中将标签放在不同的div中并浮动两个div(并指定两者的宽度)。