JSFiddle - React, Tailwind, and code Playground
HTML
<div id="text">Что впервые его трактата о пределах добра и т.д – написание. Руку при оценке качества восприятия макета. Шрифтов, абзацев, отступов и т.д просмотра шрифтов, абзацев отступов. Знает, что такое текст-рыба lorem буквы встречаются. Сыграет на кириллический контент – написание символов на сайтах. Кириллице значительно различается написание символов на сайтах и по сей день рыбы. Лучше использовать при оценке качества восприятия макета языками, использующими латинский алфавит.</div>
CSS
#text {
max-width: 300px;
}
#text span {
display: inline-block;
white-space: nowrap;
line-height: 20px;
margin: 0;
}
JavaScript
var $text = $('#text');
var $span = $('<span/>');
var words = $text.text().split(' ');
var str = '';
$text.empty().append($span);
const WINDOW_HEIGHT = 79;
const MAX_WIDTH = $text.width();
const LINE_HEIGHT = parseInt($span.css('lineHeight'));
const LINES_IN_WINDOW = Math.floor(WINDOW_HEIGHT / LINE_HEIGHT);
const MARGIN = WINDOW_HEIGHT - LINES_IN_WINDOW * LINE_HEIGHT;
for (var i = 0, l = words.length; i < l; i++) {
var $line = $span.clone();
str += words[i];
$span.text(str);
if ($span.width() > MAX_WIDTH) {
$line.appendTo($text);
str = words[i];
$span.text(str);
}
str += ' ';
}
$span.appendTo($text);
$text.children('span:nth-child('+ LINES_IN_WINDOW +'n)').css('marginBottom', MARGIN);