Это зависит от того, нужно ли вам поддерживать несколько строк в вашем div, и если вам нужно иметь многоточие (или другое) в конце, И если вам нужно сломать границу слова или нет ,
Для решения одной линии, и несколько линий решения, если вы не хотите, многоточие:
.resizable {
overflow-x: hidden;
}
Для решения одной линии с многоточием:
.resizable {
overflow-x: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
Для нескольких решений линии с (что-то) в конце, я не собираюсь публиковать код, но логика идет примерно так: вы завершаете свой div в другом div (называете их внутренним и внешним). Используйте следующий CSS:
.outer{overflow:hidden;}
.inner{width:100%;}
.extra{display:none;}
Затем поймать событие браузера изменения размера, а затем удалить все с классом многоточия $('.ellipsis').remove();
со страницы, и для каждого .extra
, взять текст и добавить его к его родителям (.inner) , а затем удалите все дополнительные классы. Затем повторите все внешние классы и сравните его с высотой, если внутренний внутренний класс. Если внутренний div больше внешнего div, тогда вам нужно применить многоточие. Добавьте код эллипса во внутренний div, например $('.inner').append('<span class="ellipsis">...</span><span class="extra"><span>')
.Затем перейдите в цикл, пока внутренний div не будет равен или меньше высоты внешнего div, сделав следующее: удалите последний (символ | слово) во внутреннем div непосредственно перед .ellipsis
и предопределите его до .extra
span.
В Интернете есть еще одно решение только для CSS. Если вы не возражаете, что слова могут быть отрезаны посередине, а эллипсис всегда будет отображаться в правом нижнем углу внутреннего div, но вам понадобится Google для этого, это очень долго для repost здесь.
Вы работаете с многострочным или однострочного текста? Ниже ответы работают с одиночными, но не с несколькими. – jterry
Я работаю с текстом mulit-line – Typhoon101