То, что я пытаюсь сделать, это создать сайт, который отображает мои тирады в форме ложных писем.
Я хочу, чтобы «размер бумаги» (размер div) был исправлен, а текст для продолжения на втором листе бумаги (второй div) отображался чуть ниже первой такой бумаги.
Я прошу прощения, будучи новым пользователем, я не могу опубликовать скриншоты, которые я создал, чтобы помочь объяснить мою ситуацию, поэтому я вынужден ссылаться, пока у меня не будет достаточно очков репутации:
http://img16.imageshack.us/img16/5538/pagesuc.jpg
ТОЛЬКО ДЛЯ САМЫ ПРОСТОТА: Я создал простую страницу html / css, чтобы продемонстрировать в простейшей форме то, что я пытаюсь выполнить с помощью кода:
<style type="text/css"> * { margin: 0; padding: 0; border: 0; } .container { background: #FFFFFF; width: 600px; height: 400px; margin: 0 auto; } #lbox { background: #F00; width: 300px; height: 400px; float: left; } #rbox { background: #00F; width: 300px; height: 400px; float: right; } .flowcontent { padding: 10px 50px; } </style> <div class="container"> <div id="lbox"> <div class="flowcontent"> <p>Lorem Ipsum...</p> </div> </div> <div id="rbox"> <div class="flowcontent"> </div> </div> </div>
Скриншот:
Я прошу прощения, будучи новым пользователем, я не могу опубликовать скриншоты, которые я создал, чтобы помочь объяснить мою ситуацию, поэтому я вынужден ссылаться, пока у меня не будет достаточно очков репутации:
http://img689.imageshack.us/img689/7853/overflowc.jpg
В этом случае я бы хотел, чтобы переполнение из красного div продолжалось в синем div справа.
Я понимаю, что это может быть невозможно с HTML / CSS в одиночку, но надеялся, что CSS3 может иметь некоторые новые трюки для этого, так как он имеет более расширенную обработку столбцов. Если это не так, у кого-нибудь есть предложение для логического пути чтобы разобраться с этим, используя PHP или даже JavaScript или JQuery?
Я знаю PHP, но я все еще JS / JQ newb, поэтому я представил некоторый (надеюсь) очень простой примерный код для всех, кто подключит их собственные примеры JS / PHP.
Во всяком случае, спасибо за ваше время.
То, что вы хотите, – это модуль областей CSS, предложенный Adobe и в настоящее время поддерживаемый нулевыми браузерами. Adobe действительно выпустила очень грубый браузер на основе веб-кита для игры со спецификацией, если вы действительно заинтересованы. Но, как говорили другие, сейчас вы SOL, и вам нужно будет найти другое решение.
Я придумал небольшой скрипт JS, который мог бы помочь вам. Это далеко не идеально, но может дать вам достойную отправную точку. По сути, он просматривает ваш большой текст и ищет полосу прокрутки. Возможно, вам придется немного изменить вычисления.
JSFiddle http://jsfiddle.net/Tt9sw/2/
JS
var currentCol = $('.col:first'); var text = currentCol.text(); currentCol.text(''); var wordArray=text.split(' '); $.fn.hasOverflow = function() { var div= document.getElementById($(this).attr('id')); return div.scrollHeight>div.clientHeight; }; for(var x=0; x<wordArray.length; x++){ var word= wordArray[x]; currentCol.append(word+' '); if (currentCol.hasOverflow()){ currentCol = currentCol.next('.col'); } }
HTML
<div class="col" id="col1">Lorem Ipsum ....... LONG TEXT .......</div> <div class="col" id="col2"></div> <div class="col" id="col3"></div> <div class="col" id="col4"></div> <div class="col" id="col5"></div>
CSS
.col{ width:200px; float:left; height:200px; border:1px solid #999; overflow:auto; font-family:tahoma; font-size:9pt; }
ОБНОВИТЬ
В этом примере вы должны включить jQuery Libray в свои скрипты.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js" type="text/javascript"></script>
PS – если вы узнаете jQuery, вы начнете использовать его для всего . Это значительно увеличивает совместимость между браузерами и упрощает многие общие задачи.
CSS3 имеет многоколоночный макет . Однако, я сомневаюсь, что он широко поддерживается на данный момент.
Проверьте его на целевых браузерах: http://www.quirksmode.org/css/multicolumn.html
Вы не можете делать это только с помощью HTML и CSS. CSS ориентирован прежде всего на веб-браузеры, а макетная модель – на документ на вертикально расширяющейся поверхности. Вы можете создавать автоматическую высоту (по умолчанию) или фиксированную высоту, но вы не можете изменить способ, которым контент принадлежит родительскому блоку (что вам нужно для этого, чтобы он работал).
Несколько вариантов, которые вы могли бы рассмотреть, если это действительно важно для вас:
page-break-after
page-break-before
и т. Д. Вы не будете получать страницы в веб-браузере, но по крайней мере вы можете контролировать, как он печатает на физической бумаге Однако для большинства вещей в Интернете я просто отпустил идею и пошёл с более реалистичным дизайном.
Если вы знаете, сколько символов принадлежит одной из ваших страниц, вы можете динамически отделять свою строку, используя javascript или php, а затем распечатать первую часть массива в первом «листе бумаги», а второй – на втором.
Вы не сможете сделать это только с помощью HTML / CSS
Формы Adobe делают именно это, однако, он имеет очень ограниченную поддержку браузера.
IE: 11+
Chrome: 37+
FireFox: 32+