|
|
|
|
|
для: ONYX
(25.11.2011 в 03:45)
| | изначально так и было сделано, но юзер не имеет доступа к странице, это как рекламный щит на шнягах похожих на ibox. Сейчас контент просто плавно скроллится. Но заказчик сказал что читать его не удобно, что есть правда по сути). | |
|
|
|
|
|
|
|
для: sl1p
(23.11.2011 в 19:10)
| | А почему бы не воспользоватсья обычным скроллингом для блока со строго заданным размером? | |
|
|
|
|
|
|
|
для: sl1p
(22.11.2011 в 18:49)
| | Интересная, все же, задача. В общем виде не могу решить - нужны допущения. Хотя бы, любой заголовочный тег принудительно отправлять на новую страницу. Кушать не могу, зацепило. | |
|
|
|
|
|
|
|
для: sl1p
(23.11.2011 в 19:10)
| | Хм... дурацкая задачка...
Так как ПОЛНОЕ содержимое блока - это не просто текст, а именно HTML-код со всякими-разными стилями, то "разбить" его на части - задача весьма нетривиальная.
Ну вот попробуйте ВРУЧНУЮ разбить на две приблизительно равные части следующий HTML-код:
просто1 просто2 просто3 просто4
<b>жирно1 жирно2 жирно3 жирно4
<i style="color: red">жирныйКурсив1 жирныйКурсив2 [место разрыва] жирныйКурсив3 жирныйКурсив4</i>
жирно5 жирно6 жирно7 жирно8</b>
просто5 просто6 просто7 просто8
|
Ну и как это у вас получится?
Правильно, вам надо будет ВРУЧНУЮ добавить ещё несколько тегов - открывающих и закрывающих <B> и <I>.
Иначе изменится HTML-структура содержимого.
ПЕРВАЯ ЧАСТЬ (добавленные теги выделены жирно):
просто1 просто2 просто3 просто4
<b>жирно1 жирно2 жирно3 жирно4
<i style="color: red">жирныйКурсив1 жирныйКурсив2</i></b>
-------------------
ВТОРАЯ ЧАСТЬ (добавленные теги выделены жирно):
<b><i style="color: red">жирныйКурсив3 жирныйКурсив4</i>
жирно5 жирно6 жирно7 жирно8</b>
просто5 просто6 просто7 просто8
|
Для MSIE решение есть. Но и оно - кривоватое.
А вот для прочих браузеров - это надо "долго-долго мучаться", мей би "что-нибудь получится".
------
Кратко о решении в MSIE:
1. Создается ифрейм, коему присваивается designMode='On', в него помещается innerHTML всего содержания блока.
2. Ширина ифрейма (и внутренние горизонтальные паддинги) - одинаковы с блоком. Высота ифрейма - гарантированно большая (чтобы не появлялась прокрутка и не уменьшалась рабочая область документа внутри ифрейма по ширине).
3. Определяется реальная высота содержимого в ифрейме. Делится на заданную высоту блока и таковым образом получается количество "страниц" (здесь надо учитывать вертикальные паддинги блока).
4. Начинается циклический процесс выделения и удаления "лишнего" текста для каждой "страницы" в ифрейме (командами execCommand). innerHTML "оставшегося" текста каждой "страницы" запоминается в переменных.
5. В блок помещается innerHTML первой страницы и формируются ссылки для показа второй и последующих.
"Кривость" этого способа заключается в том, что для удаления части текста из ифрейма необходимо эту часть текста выделить, а всякое выделение возможно только на видимом участке страницы. Сиречь невидимым (style="visibility: hidden") ифрейм сделать нельзя. И, соответственно, все эти программные манипуляции с ифреймом пользователь однозначно УВИДИТ.
Остаётся надеяться, что комп у пользователя быстрый, а полное содержимое блока не очень велико:-)) | |
|
|
|
|
|
|
|
для: DJ Paltus
(23.11.2011 в 16:46)
| | да может быть огромный шрифт(заголовок) и всё что угодно по сути
текст идет из tinymce | |
|
|
|
|
|
|
|
для: sl1p
(23.11.2011 в 16:21)
| | Это вообще в ТУ сторону.
Вам сколько раз в год размер шрифта учитывать надо? Один раз прикинули, сколько влазит - и действуйте. Или в этом тексте могут быть шрифты разного размера? Тогда да, придется считать размер надписи попиксельно (например, средствами imagettfbbox, что бесчеловечно).
И какие такие отступы? Если между строками понаставлено пустых строк, то в моем варианте они учтутся. Если абзацы с красной строки начинаются, то это тоже можно учесть, немного покрутившись, либо успокоиться и сделать text-indent:0. | |
|
|
|
|
|
|
|
для: DJ Paltus
(23.11.2011 в 15:55)
| | ...
Спс за попытку конечно, но это вообще не в ту сторону. Читайте выше, нужен учет стилей (отступов, размер шрифта и т.д.) | |
|
|
|
|
|
|
|
для: sl1p
(23.11.2011 в 14:44)
| | Есть у меня нечто подобное - делит длинный текст на страницы для прокрутки в jCarouselLite.
Я туда и стихи совал, и "Алису в стране чудес", со всем справляется. Ширину строки и количество срок в блоке - на глазок прикидывал, они постоянные.
<?
$text = file_get_contents("alice.txt"); // весь текст
$strings = wordwrap(strip_tags($text, "<a><p><b><u><i>"), 85); //чистим лишние теги и бьем строку по слову, макс. ширина - 85 символов, разделитель - символ переноса
$strings = explode("\n", $strings); // превращаем строку в массив строк, используя символ переноса
$lists = array_chunk($strings, 36); // делаем массив массивов по 36 строк.
|
Ну и дальше элементы массива $lists рассовываем по страничкам, объединив элементы его элементов в строки. | |
|
|
|
|
|
|
|
для: Владимир55
(23.11.2011 в 14:02)
| | не вариант. Текст может быть со всевозможными стилями (отступы к примеру) так что здесь только JS... и то пока не уверен что это можно сделать вообще | |
|
|
|
|
|
|
|
для: sl1p
(23.11.2011 в 13:14)
| | Я такую "крошилку" сделал на РНР - целые тома режет на короткие текстовые файлы.
Подсчитал, сколько помещается знаков с конкретным размерам шрифта в имеющейся площади, и режу по предложениям (точка, вопросительный или восклицательный знак).
А для больших площадей по абзацам. | |
|
|
|
|