web-dev-qa-db-ja.com

2つのdivを並べて配置して、左側の1つが適切なサイズになり、残りが残りのスペースを占めるようにする方法は?

次の基準で2つのdivを並べて配置しようとしています。

  1. 両方のdivが同じ行にある必要があります。
  2. 左側のdivを優先する必要があります。オーバーフローが発生した場合に省略記号が使用される点まで、左側のdivにできるだけ多くのテキストを表示する必要があります。
  3. 右側のdivのテキストは右揃えにする必要があります。オーバーフローの場合は、省略記号を使用する必要があります。
  4. テキストは動的であるため、パーセンテージや固定幅は使用できません。
  5. webkitベースのブラウザーでのみ動作する必要があるため、CSS3ソリューションが推奨されます。

これがどのように見えるかのサンプル画像です:

入力

<div class='left'>I should always fit. If not, Ellipsis should be used.</div><div class='right'>Right align and fit me if space available here.</div>

出力

enter image description here

入力

<div class='left'>I should always fit. If not, Ellipsis should be used. And some more text and more, and more text.</div><div class='right'>Right align and fit me if space available here.</div>

出力

enter image description here

入力

<div class='left'>This text is left aligned.</div><div class='right'>This text is right aligned.</div>

出力

enter image description here

14
Philip Murphy

私はそれを持っていますが、空のスペースがあるとき、私の右のdivがそれを食べています(テキストを右揃えで)。あなたはそれを質問としてリストしないので、それがあなたがそれをどのようにそれを描いたのかであるかどうか私は知りませんでしたか? Fiddleここ: http://jsfiddle.net/mdares/fSCr6/

HTML:

<div class="container">
    <div class="left">Some Text, Repeat, Repeat, Repeat, ,Some Text, and then: </div>
    <div class="right">other Text ttt other Text tttother Text tttother Text ttt</div>
</div>

<p />

<div class="container">
    <div class="left">Some Text, Repeat, Repeat, Repeat, ,Some Text, Some Text, Repeat, Repeat, Repeat, ,Some Text,</div>
    <div class="right">other Text ttt other Text tttother Text tttother Text ttt</div>
</div>

<p />

<div class="container">
    <div class="left">Some Text, Repeat, Repeat, Repeat, ,Some Text, </div>
    <div class="right">other Text ttt</div>
</div>

CSS:

.container {
    width: 600px;
}
.left {
    max-width: 100%;
    background:red;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:Ellipsis;
    -ms-text-overflow:Ellipsis;
    float: left;
}
.right {
    background:yellow;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:Ellipsis;
    -ms-text-overflow:Ellipsis;
    text-align: right;
}

そして最後に:

enter image description here

9
Matthew

コンテナの幅を除く%で定義できますこれが解決策です。機能した唯一の亀裂は、コンテナの背景を子供のものと同じように配置することでした。

さもなければ、最後の条件を達成するのは本当に難しい:)ただ真であること。

これがフィドルリンクです

幅フィドル

ここにCSSがあります

.container {
width: 100%;
overflow:hidden;
whitespace:nowrap;
max-width:100%;
    background-color:red;
}
.left {
    width:auto;
    background:red;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:Ellipsis;
    -ms-text-overflow:Ellipsis;
    float: left;
    position:absolute;
    max-width:inherit;
}
.right {
    background:yellow;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:Ellipsis;
    -ms-text-overflow:Ellipsis;
    text-align: right;
    width:auto;
    float:right;
}

それが合うかどうかそれを参照してください。貼り付けた最後の画像に対して別の解決策がある場合、最後の状態は本当に厳しいです。共有してください:)

0
Anobik