2013-08-10 3 views
0

Я показываю текстовые строки разных символов и длину в div фиксированной ширины. Я хотел бы разместить как можно больше текста в выделенном пространстве. Мой текущий подход заключается в ограничении количества текстовых символов следующим образомОптимизация длины текста ограниченного пространства

var n = //some number 
string = string.substr(0,n); 

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

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

+0

Просьба [jsfiddle пример] (http://jsfiddle.net), который показывает проблема под рукой – Dom

ответ

0

Рассчитать фактическую ширину текста, используя метод, описанный здесь: https://coderwall.com/p/kdi8ua.

Затем продолжайте добавлять символы, пока ширина не больше ширины вашего элемента и удаления 1.

Здесь функция с сайта связана с:

// Calculate width of text from DOM element or string. By Phil Freo <http://philfreo.com> 
$.fn.textWidth = function(text, font) { 
    if (!$.fn.textWidth.fakeEl) $.fn.textWidth.fakeEl = $('<span>').hide().appendTo(document.body); 
    $.fn.textWidth.fakeEl.html(text || this.val() || this.text()).css('font', font || this.css('font')); 
    return $.fn.textWidth.fakeEl.width(); 
}; 
1

Вы можете попробовать text-overflow

От quirks mode:

текста overf низкий входит в игру только тогда, когда:

коробка имеет переполнение, отличное от видимого (с переполнением: видимый текст просто вытекает из коробки) В поле есть пустое пространство: nowrap или аналогичный метод ограничения способа текст изложен. (Без этого текст будет обернуть на следующую строку) изменение

Стиль:

div{ 
    width:200px; 
    white-space:nowrap; 
    overflow: hidden; 
    text-overflow: ellipsis; 
} 

Working demo

+0

Спасибо за ваш ответ, ваш css не предотвращает обертывание, но, похоже, он не ограничивает ширину. –

+0

Возможно, что-то еще мешает. С голым html документом и только одним div, это работает для меня. – dc5

Смежные вопросы