让div占用另一个div之后留下的所有空间

时间:2013-03-18 21:33:09

标签: css html

我有两个div并排。第一个包含一个文本字段可能相当冗长,另一个包含一个简短的数字。

我需要第一个div来占用所有可用空间,而不需要拉伸父级和剪辑,如果需要的话。 Ant它应该考虑第二个div的宽度。因此,如果文本的长度很短,那么两个div应该并排,但如果文本很长,那么第一个将被剪裁,第二个将被一直推到右边。

这是近似的表格布局:

<div id="container">
    <div id="row">
        <span id="text">Short text</span><span id="value">123</span>
    </div>

    <div id="row">
        <span id="text">A bit longer text</span><span id="value">555</span>
    </div>

    <div id="row">
        <span id="text">A very very very very very very very very long text</span><span id="value">555</span>
    </div>
</div>

相应的CSS:

#container {
    border: 1px solid #000000;
    width: 300px;
}

#row {
    display: inline-block;
    border: 1px solid #000077;
    width: 100%;
    clear: both;
}

#text {
    display: inline-block;
    border: 1px solid #007700;
}

#value {
    display: inline-block;
    border: 1px solid #770000;
}

这是一个jsfiddle模板,说明了我的需求。 应该剪切一条很长的文本行,并将555放在它旁边的同一行上,这样整个结构就可以适应指定的300px(数字是任意的,它将由现实生活中的其他元素定义,并且事先不知道)。

3 个答案:

答案 0 :(得分:1)

您可以使用display: tableFiddle):

#container {
    display: table;
}

#row {
    display: table-row;
}

#text {
    display: table-cell;
}

#value {
    display: table-cell;
}

答案 1 :(得分:0)

Demo Fiddle

#text {
    display: inline-block;
    border: 1px solid #007700;
    float:left;
    min-width:80%;
    max-width:80%;
}

#value {
    display: inline-block;
    border: 1px solid #770000;
    float:left;
    max-width:18%;
    overflow:hidden;
}

答案 2 :(得分:0)

我只是将样式内联,因为你有id="text"的多个元素。设置max-width,定义height,然后将overflow:hidden设置为floating,同时将clear-both设置为<div id="text" style="overflow:hidden; float:left; max-width:270px; height:22px;">A very very very very very very very very long text</div><div style="float:left;" id="value">555</div> 。您可能必须在行之间使用空白{{1}} div。

{{1}}