Это ограничит его к однако многие строки, которые вы хотите, она ограничена и отзывчив
Идея, что никто не предложил, это делать основанный на высоте элемента, а затем отбрасывая его обратно оттуда.
Fiddle - https://jsfiddle.net/hutber/u5mtLznf/ < - ES6 версия
Но в основном вы хотите, чтобы захватить высоту строки элемента, проходную весь текст и останавливаются, когда его на высоту некоторых линий:
'use strict';
var linesElement = 3; //it will truncate at 3 lines.
var truncateElement = document.getElementById('truncateme');
var truncateText = truncateElement.textContent;
var getLineHeight = function getLineHeight(element) {
var lineHeight = window.getComputedStyle(truncateElement)['line-height'];
if (lineHeight === 'normal') {
// sucky chrome
return 1.16 * parseFloat(window.getComputedStyle(truncateElement)['font-size']);
} else {
return parseFloat(lineHeight);
}
};
linesElement.addEventListener('change', function() {
truncateElement.innerHTML = truncateText;
var truncateTextParts = truncateText.split(' ');
var lineHeight = getLineHeight(truncateElement);
var lines = parseInt(linesElement.value);
while (lines * lineHeight < truncateElement.clientHeight) {
console.log(truncateTextParts.length, lines * lineHeight, truncateElement.clientHeight);
truncateTextParts.pop();
truncateElement.innerHTML = truncateTextParts.join(' ') + '...';
}
});
CSS
#truncateme {
width: auto; This will be completely dynamic to the height of the element, its just restricted by how many lines you want it to clip to
}
Вы хотите усечь что-то вроде '' это очень длинная строка'' '' это ве ... ''и т. Д.? –
Можете ли вы предоставить и пример? И что вы подразумеваете под TEXT? – jzd
@ El Ronnoco точно! –