Эллипсис с текстовым переполнением 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;