Как разместить два divs бок о бок, где LEFT один размер подходит, а другой занимает оставшееся пространство?

Я пытаюсь разместить два div рядом друг с другом со следующими критериями:

  • Оба div должны оставаться на одной строке.
  • Приоритет должен быть отдан левому div. Как можно больше текста должно отображаться в левом div до точки, где используется эллипс в случае переполнения.
  • Правильный текст div должен быть выровнен по правому краю. В случае переполнения следует использовать эллипсис.
  • Текст является динамическим, поэтому никакие проценты или фиксированные ширины не могут использоваться.
  • Нужно работать только с браузером 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

Ответы

Ответ 1

У меня есть это, за исключением того, что когда есть пустое пространство, мой правый 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

Ответ 2

За исключением ширины контейнера. Это может быть определено в% здесь решением. Единственная трещина, которая сработала, заключалась в том, что контейнер backgroud был похож на детскую.

иначе последнее условие действительно трудно достичь:) Просто быть правдой.

Здесь ссылка скрипта

ширина скрипки

Здесь 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;
}

Смотрите, если он подходит. Последнее условие действительно жесткое, если у кого-то есть другое решение для последнего изображения, которое вы вставили, пожалуйста, поделитесь:)