Я хочу разбивать текст на несколько div, чтобы он соответствовал разрешенной области
Логика довольно проста:
1. Разделить текст на слова
2. добавить слово в слово и вычислить высоту элемента
3. если мы превысим высоту - создаем следующую страницу
Это работает неплохо
вот функция JS, которую я использовал:
function paginate() {
var newPage = $('<pre class="text-page" />');
contentBox.empty().append(newPage);
var betterPageText='';
var pageNum = 0;
var isNewPage = false;
var lineHeight = parseInt(contentBox.css('line-height'), 10);
var wantedHeight = contentBox.height() - lineHeight;
for (var i = 0; i < words.length; i++) {
if (isNewPage) {
isNewPage = false;
} else {
betterPageText = betterPageText + ' ' + words[i];
}
newPage.text(betterPageText + ' ...');
if (newPage.height() >= wantedHeight) {
pageNum++;
if (pageNum > 0) {
betterPageText = betterPageText + ' ...';
}
newPage.text(betterPageText);
newPage.clone().insertBefore(newPage)
betterPageText = '...';
isNewPage = true;
} else {
newPage.text(betterPageText);
}
}
contentBox.craftyslide({ height: wantedHeight });
}
Но когда я добавляю изображение, он разбивает все. В этом случае текст переполняет "зеленую" область.
Рабочий скрипт: http://jsfiddle.net/74W4N/7/
Есть ли лучший способ разбивать текст на страницы и вычислять высоту элемента?