При представлении предварительно отформатированного текста в Интернете (например, примеры кода) может возникнуть проблема с переносом строк. Вы хотите обернуть для удобочитаемости без прокрутки, но также нужно, чтобы пользователь однозначно понимал, что это одна строка без разрыва строки.
Например, у вас может отображаться очень длинная командная строка, например:
c:\Program Files\My Application\Module\bin\..> Some_really_long_command line "with parameters" "that just go on and on" " that should all be typed on one line" "but need to be wrapped for display and I'd like the text style to indicate that it has wrapped"
(Stackoverflow заставляет такую строку не переноситься.)
Есть ли способ стилизации с помощью CSS, который обеспечит ту же обработку, что и в книгах? то есть, чтобы обернуть линию, но включить изображение или глиф, который указывает продолжение строки.
Очевидно, что я ищу стиль, который можно применить ко всему тексту, и позволить движку рендеринга XHTML / CSS браузера выяснить, какие строки обернуты и, следовательно, нуждаются в специальной обработке.
Решение до сих пор ..
Добавление символов продолжения строки
Благодаря Джеку Райану и Мартену Сандеру, есть разумно работоспособное решение для добавления символов продолжения слева или справа от обернутых строк. Для этого требуется изображение с повторяющимися глифами по вертикали, которое смещено так, чтобы оно было невидимым, если бы была только одна развернутая строка. Основным требованием этого метода является то, что каждая строка должна находиться внутри блока (например, p, span или div). Это означает, что его нельзя легко использовать вручную с существующим текстом, который просто находится в предварительном блоке.
Фрагмент ниже суммирует основную технику. Я опубликовал живой пример здесь .
.wrap-cont-l {
margin-left: 24px;
margin-bottom: 14px;
width: 400px;
}
.wrap-cont-l p {
font-family: Courier New, Monospace;
font-size: 12px;
line-height: 14px;
background: url(wrap-cont-l.png) no-repeat 0 14px; /* move the background down so it starts on line 2 */
text-indent: -21px;
padding-left: 14px;
margin: 0 0 2px 7px;
}
.wrap-cont-r {
margin-left: 24px;
margin-bottom: 14px;
width: 400px;
}
.wrap-cont-r p {
font-family: Courier New, Monospace;
font-size: 12px;
line-height: 14px;
background: url(wrap-cont-r.png) no-repeat right 14px; /* move the background down so it starts on line 2 */
text-indent: -28px;
margin: 0 0 2px 28px;
padding-right: 14px;
}
Для использования следующим образом:
<div class="wrap-cont-l">
<p>take a long line</p>
<p>take a long line</p>
</div>
<div class="wrap-cont-r">
<p>take a long line</p>
<p>reel him in</p>
</div>
Но подождите, есть еще!
Недавно я обнаружил подсветку синтаксиса Алекса Горбачева. Это фантастический инструмент для динамического и автоматического форматирования текстовых блоков. Он в основном предназначен для подсветки синтаксиса кода, но может использоваться для любого текста. В v1.5.1, однако, он не переносит строки (фактически это заставляет их не переносить).
Хотя я немного взломал и смог добавить простой синтаксический индикатор для переноса строк, а также включить идею продолжения глифа.
Я добавил это к живым примерам и включил несколько заметок о необходимых взломах (они тривиальны). Так с этим, как текст на странице:
<textarea name="code" class="java:wraplines" cols="60" rows="10">
public class HelloWorld {
public static void main (String[] args)
{
System.out.println("Hello World! But that's not all I have to say. This line is going to go on for a very long time and I'd like to see it wrapped in the display. Note that the line styling clearly indicates a continuation.");
}
}
</textarea>
Это снимок отформатированного результата:
скриншот http://tardate.com/syntaxhighlighter/line-continuation-example.jpg