Разбиение текста для книги

Hihen

Новичок
Разбиение текста для книги

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

Допустим я предпологаю что в книгу помещается только 28 строк, и в каждой строке в среднем 52 символа. Тогда я отрезаю от текста кусок равный 28*52 символа и это у меня одна страница.

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

Может быть надо каким то другим способом текст на страницки разбить? Никак не могу сообразить... Помогите пожалуйсто.
 

Glazyrin Sergey

Новичок
Могу предложить такую идею - повесить события на onscroll(onkeyup,onkeydown) на какой то элемент - может див главный для "книги"
В хендлере события обрабатывать - позицию относительно твоего главного контейнера в "книге" и если она больше какой то позиции "прокручивать" текст
 

Hihen

Новичок
а если у кого нибудь отклюсен javascript, то он вообще ерунду увидет
 

Glazyrin Sergey

Новичок
А у кого отключен джаваскрипт ? У роботов поисковых ? Имхо роботы все увидят - только не смогут показать.
Нормальный сайт не делается без джаваскрипта.
 

Glazyrin Sergey

Новичок
Посмотри здесь
http://radiovoice.ru/?type=1&id=16&ses=html

Как сделан скрол - может тебя устроит такое решение
handler - это обработчик твоих событий

-~{}~ 25.01.09 02:00:

Забыл добавить - скролл можно "разукрашивать" в любые цвета формы
 

Hihen

Новичок
А а а... Так у меня фотогалерея сделана... Эт понятно. Хочется без скрола...
 

Glazyrin Sergey

Новичок
Нарисуй его в таких тонах, чтобы он не был заметен - и тогда все будет супер
Это не скролл - это джаваскриптовый скролл
 

Hihen

Новичок
Тогда смысл самого дизайна пропадает, фотогалерея у меня сделана на папирусе и там понятно зачем скрол нужен...
А книга должна всетки по страничкам листаться...
 

Glazyrin Sergey

Новичок
Ну тогда так как я писал - напиши такой алгоритм - как в моем первом сообщении
И повесь еще обработчик на клик на номер страницы
 

x-yuri

Новичок
дизайн разлазиется если строк оказывается в действительности больше
измени свой 28*52 так, чтобы строк не было больше

если у тебя там абзацы, то можешь смотреть сколько каждый абзац строк занимает - так точнее будет, главное с запасом ограничения поставить

а вообще твою идею сложно реализовать хорошо

ты хочешь автоматически на страницы разбивать?

-~{}~ 25.01.09 01:12:

вообще, я не вижу вариантов, кроме как вручную на страницы разбивать. Может на флеше разве что как-нибудь
 

Hihen

Новичок
Конечно автоматически, у меня таких текстов около 1000 не буду же я в ручную парится... Да у меня все с помощью абзатцев сверстоно, но абзац же тоже занимается всегда разное количесво строк...

-~{}~ 25.01.09 02:15:

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

x-yuri

Новичок
Конечно автоматически, у меня таких текстов около 1000 не буду же я в ручную парится...
любишь кататься, люби и катайся ;-) делай флешку, которая будет отображать текст страниц, там больше шансов получить нужный тебе результат

Да у меня все с помощью абзатцев сверстоно, но абзац же тоже занимается всегда разное количесво строк...
но определение количества строк в абзаце более точное, чем в странице (если это не сумма строк абзацев)

-~{}~ 25.01.09 01:19:

в HTML можно только приблизительно ограничить количество строк, в том же гугл то 2, то 3 строки текста

-~{}~ 25.01.09 01:21:

хотя определение количества строк в абзаце тебе должно помочь ;-)
 

Hihen

Новичок
Я думаю дело не в количестве строк... это статично 28. А вот символы я усредненно посчитала получилось 52, но текст может быть разным, буквы же не одинаковой ширины. Буква ш например шире, а запятая вообще места мало занимает, вот и получается, что в какуюто строку влезло не 52 символа а 60 и тогда осталось пустое пространство внизу, а в какуюто наоборот меньше и тогда и строк уже получилось не 28, а 29 и дизайн разлесься
 

С.

Продвинутый новичок
Взять пустой div и яваскриптом его заполнять словами из текста, в это же время отслеживая высоту div'а. Если перескочил предел -- убрать последнее вставленное слово.

А в принципе, это не совсем правильно имитировать в вебе совершенно иной принцип носителя.
 

x-yuri

Новичок
А в принципе, это не совсем правильно имитировать в вебе совершенно иной принцип носителя.
скажем так, это сложно, это как пытаться компилировать mysqlnd под php 5.2, учитывая, что он рассчитан на php 5.3 и выше, или как пытаться определить типы переменных с помощью шаблонов на этапе компиляции ))))

действительно, кстати, можно яваскриптом попробовать

Hihen, а по поводу абзацев ты меня до сих пор не понял похоже: берешь среднюю ширину строки; определяешь, сколько строк в абзаце, потом в следующем, потом еще в одном, когда количество строк превысит предел - страница закончилась. Т.е. "количество символов в странице / среднюю ширину строки" менее точно по сравнению с "сумма по абзацам типа (количество символов в абзаце / среднюю ширину строки)"
 

Modjo

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

-~{}~ 26.01.09 10:45:

а вот ещё идея - в пхп таким же макаром как предлагалось генерить текст в картинку (http://www.php.net/manual/ru/function.imagettftext.php), ф-ия как я понял возвращает массив с точками получившегося текста. но чё та мне кажется ресурсоёмкий будет процесс
 

x-yuri

Новичок
идея! во-первых, можно таким образом посмотреть, сколько времени займет выдача последней страницы. Хотя на это можно забить, вряд ли будет приемлемый результат

во-вторых можно вставить в текст маркеры, разделяющие его на страницы, с помощью imagettftext или даже хранить страницы в отдельных записях бд. Т.е. написать для этого скрипт

и еще можно сделать книгу подстраивающейся под высоту страницы текста и задать минимальную высоту - на случай если что-то на клиенте пойдет не так
 

ksnk

прохожий
А зачем такую задачу мастерить на PHP?
Всю статью вывести в div. Весь размер дива - div.offsetHeight, размер видимого участка - div.clientHeight. Текущая страница - div.scrollTop. Вот вам "высота страницы", "номер страницы" и "длина книги". Количество страниц - это во второй класс средней школы...
Сочиняйте на JavaScripte вывод списка страниц и дискретный скроллинг по номеру страницы на нужную "страницу".
А настоящий скроллинг у дива можно и скрыть...
 
Сверху