Wie ein Zeilenumbruch/continuation-style und code-Formatierung mit css
Bei der Darstellung von vorformatiertem text im web (z.B. code-Beispiele), Zeilenumbruch kann ein problem sein. Sie wollen wickeln, zur besseren Lesbarkeit, ohne scrollen, aber es müssen auch eindeutig sein, um den Benutzer, dass es ist alles eine Zeile, ohne Zeilenumbruch.
Zum Beispiel, Sie haben eine wirklich lange Befehlszeile angezeigt, wie diese:
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 Kräfte diese Zeile nicht umbrochen wird.)
Gibt es einen Weg, styling mit CSS zu geben, die gleiche Behandlung, wie Sie sehen in den Büchern? d.h., wickeln Sie die Linie, aber ein Bild oder eine Glyphe, zeigt eine Zeile fortgesetzt.
Offensichtlich ich bin auf der Suche nach einem Stil, der angewendet werden kann, sämtliche Texte, und lassen Sie den browser die XHTML/CSS-rendering-engine herauszufinden, welche Zeilen umbrochen wurden und daher brauchen die eine Besondere Behandlung.
Die Lösung so weit..
Hinzufügen Zeile Fortsetzung Glyphen
Dank Jack Ryan und Maarten Sander, eine einigermaßen brauchbare Lösung hinzufügen Fortsetzung Glyphen entweder Links oder rechts von umbrochenen Zeilen. Es erfordert ein Bild mit sich wiederholenden Zeichen in die vertikale, die ist versetzt, so dass es unsichtbar ist, wenn nur eine ausgepackt Linie. Die wichtigste Voraussetzung dieser Technik ist, dass jede Zeile muss innerhalb eines Blockes (z.B. p, span oder div). Dies bedeutet, es kann leicht verwendet werden, die manuell mit vorhandenen text, der einfach nur sitzen in einem pre-block.
Fragment unten fasst die wesentlichen Technik. Ich habe eine live-Beispiel hier.
.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;
}
Werden wie folgt verwendet:
<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>
Aber Wartezeit, dort ist mehr!
Ich vor kurzem entdeckt habe syntaxhighlighter von Alex Gorbatschow. Es ist ein fantastisches Werkzeug für dynamisch und automatisch formatieren von text-Blöcken. Es ist hauptsächlich gedacht für syntax-highlighting-code, aber könnte verwendet werden, für einen beliebigen text. In v1.5.1 es ist jedoch nicht umbrechen von Zeilen (in der Tat, es zwingt Sie nicht zu wickeln).
Habe ich ein wenig daran herum zu hacken, obwohl, und war in der Lage, einen einfachen Zeilenumbruch-option syntaxhighlighter und beinhalten auch die Fortsetzung Glyphe Idee.
Ich habe dies nur Hinzugefügt, um die live-Beispiele und enthalten ein paar Hinweise zu den hacks erforderlich (Sie sind trivial). So wie der text in der Seite:
<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>
Dies ist eine Momentaufnahme in das formatierte Ergebnis:
screenshot http://tardate.com/syntaxhighlighter/line-continuation-example.jpg
Ich habe getan, dass in der Frage selbst "Die Lösung so weit..". Ich kann nicht Bearbeiten Sie die beste Antwort, die ich erhielt, und ich will nicht zu nehmen, die rep durch die Erstellung meiner eigenen Antwort (die Antworten, die ich bekommen verdienen die Anerkennung!). Versuchen zu arbeiten, die innerhalb der Parameter der SO..
InformationsquelleAutor tardate | 2008-12-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine (unangenehme) Weg, dies zu tun. Es erfordert eine Reihe von schlechten Praktiken. Aber SO ist über Lösungen für Reale Probleme, so hier gehen wir...
Jeweils erste Zeile muss sein gewickelt in einer Art enthaltenden block. Span oder p sind wahrscheinlich die am besten geeignete.
Dann den Stil des umschließenden Blocks haben muss, um die Zeilenhöhe festzulegen. und ein Hintergrundbild enthält eine Reihe von newLine Glyphen am Anfang jeder Zeile, außer der ersten. Als dies ist der code, wäre es sinnvoll zu erwarten, dass es nicht wickeln mehr als 5 mal. So wiederholen 5 mal ist wohl enoygh.
Diese können dann als Hintergrundbild und anzeigen sollen an den Anfang jeder Zeile, außer der ersten. Ich denke, das resultierende CSS könnte wie folgt Aussehen:
Ausgezeichnet! Ich bin froh, es zu hören! Ich mag die ol für die Zeilennummern Vorschlag von P. Ant wahrscheinlich besser semantisch zu.
Beachten Sie, dass ich gesammelt und zusammengefasst die beste Lösung in der Frage selbst
InformationsquelleAutor Jack Ryan
Ich eine Lösung gefunden habe, sehr ähnlich zu Jack Ryan, sondern mit der 'Fortsetzung' - Zeichen am Ende der Zeile. Außerdem rückt die fortgesetzten Zeilen.
CSS:
HTML:
InformationsquelleAutor Maarten Sander
Diese nicht mit CSS. Sorry. 🙁
InformationsquelleAutor eyelidlessness
Wenn Sie wollen, dass es eindeutig sein, müssen Sie das markup. Ich würde vorschlagen, mit einem <ol> mit einer Liste der Element pro Zeile code, denn so erhalten Sie die Zeilennummerierung für Sie kostenlos. Wenn dies zu viel Arbeit zu tun auf der gesamten Website, können Sie immer fügen Sie es mithilfe von Javascript.
InformationsquelleAutor