Скажем, у нас есть длинный текст, такой как "Ромео и Джульетта", и мы хотим представить это в простом ereader (без анимаций, только страниц и пользовательского размера шрифта). Какие существуют подходы к этому?
Что я до сих пор придумал:
- Используя столбцы css3, можно будет загрузить весь текст в память, уложив его таким образом, чтобы один столбец занимал размер всей страницы. Выполнение этого оказалось чрезвычайно сложным для управления и требует, чтобы весь текст загружался в память.
- Использование областей css3 (не поддерживается в любом крупном браузере) будет представлять собой ту же основную концепцию, что и предыдущее решение, с той большой разницей, что ее было бы не так сложно контролировать (поскольку каждый столбец является автономным элементом).
- Рисование текста на холсте позволит вам точно знать, где заканчивается текст и, таким образом, нарисовать следующую страницу на основе этого. Одно из преимуществ заключается в том, что вам нужно всего лишь загрузить весь текст до текущей страницы (все еще плохо, но лучше). Недостатком является то, что текст не может взаимодействовать с (как и выбор текста).
- Поместите каждое слово внутри элемента и дайте каждому элементу уникальный идентификатор (или сохраните логическую ссылку в javascript), затем используйте
document.elementFromPoint
, чтобы найти элемент (слово), который является последним на странице, и показать следующий страница вперед от этого слова. Несмотря на то, что это единственное, что кажется мне реально реалистичным, накладные расходы, порожденные этим, должны быть огромными.
Тем не менее, ни одна из них не кажется приемлемой (сначала не было достаточно контроля, чтобы даже заставить ее работать, второй пока не поддерживается, третий - жесткий и без выбора текста, а четвертый дает смешные накладные расходы), поэтому любой хорошие подходы, о которых я еще не думал, или способы решения одного или нескольких недостатков упомянутых методов (да, я знаю, что это довольно открытый вопрос, но чем более он открыт, тем выше вероятность создания каких-либо релевантных ответы)?