Эллипсис с текстовым переполнением CSS не отображается

У меня есть div с некоторым внутренним контентом, который должен иметь многоточие, когда он переполняется. Я делал это много раз на других элементах, но по какой-то причине это не ведет себя так, как ожидалось.

Кроме того, я оставил white-space:nowrap; специально, потому что контент затем не разбивается на следующую строку в пределах диапазона, поэтому я вижу только 2-3 слова перед началом многоточия. Я хотел бы, чтобы текст охватывал всю высоту родительского контейнера, а затем начиналось эллипсис для контента, который существует за пределами этих границ.

Вот рабочая демонстрация: http://jsfiddle.net/sadmicrowave/DhkSA/

CSS

.flow-element{
     position:absolute;
     font-size:12px;
     text-align:center;
     width:75px;
     height:75px;
     line-height:70px;
     border:1px solid #ccc;
}

.flow-element .inner{
     position:absolute;
     width:80%;
     height:80%;
     border:1px solid blue;
     top:0px;
     bottom:0px;
     left:0px;
     right:0px;
     margin:auto;
     text-align:center;
}

.flow-element .long{
     float:left;
     height:50px;
     width:100%;
     line-height:12px;
     border:1px solid red;  
     text-overflow:ellipsis;
     overflow:hidden;
}

HTML:

<a class='flow-element' style='top:100px; left:50px;'>
  <div class='inner'>
     <span class='long'>Box 1 and some other content that should wrap and do some other stuff</span>
  </div>
</a>

Кто-нибудь может помочь. Мне нужно отображать как можно больше текста в красном выделенном диапазоне, имея эллипсис, когда текстовое содержимое переполняет контейнер...

Заранее спасибо

Ответ 1

вы не можете применить text-overflow: ellipsis к встроенным элементам (span), его можно использовать только с элементами блока (div)

а также использовать white-space:nowrap; при использовании text-overflow: ellipsis;

проверьте это, я преобразовал ваш внутренний диапазон в div, только для доказательства концепции

http://jsfiddle.net/3CgcH/5/

Я не знаю, почему вы использовали диапазон, но в соответствии с вашей логикой вы можете вносить изменения, поскольку я предложил

Update:

кто-то подумает, что в вопросе, если я положил элемент white-space: nowrap; на span, тогда работает text-overflow: ellipsis:, поэтому я ошибаюсь, но это не так, потому что вопроситель использовал float: left в теге span это означает, что тег span будет преобразован в блок-блок и будет работать как обычный элемент уровня блока, что также неправильно, потому что, если вам нужно поведение элемента блока, используйте элемент уровня блока

Справка:

http://www.w3.org/TR/CSS2/visuren.html#propdef-float

http://dev.w3.org/csswg/css3-ui/#text-overflow

Ответ 2

Добавьте white-space:nowrap; в ваш .inner div.

Ответ 3

Добавьте это:

white-space:nowrap;

в .flow-element.long

то работает overflow-ellispsis.

Ответ 4

Я думаю, вы обнаружите, что проблема вызвана тем, что text-align: center;