Gerade
li + li::before {
content: " | ";
}
Dies löst natürlich nicht das Problem des OP. Er möchte die vertikalen Balken am Anfang und Ende der Zeilen entfernen, je nachdem, wo sie unterbrochen sind. Ich werde mich auf die Probe stellen und behaupten, dass dieses Problem mit CSS und nicht einmal mit JS nicht lösbar ist, es sei denn, man möchte die Textmess- / Layout- / Zeilenumbruchlogik der Browser-Engine im Wesentlichen neu schreiben.
Die einzigen Teile von CSS, die, soweit ich sehen kann, über Zeilenumbrüche "Bescheid wissen", sind zunächst das ::first-linePseudoelement, das uns hier nicht hilft - auf jeden Fall ist es auf einige Präsentationsattribute beschränkt, und funktioniert nicht zusammen mit Dingen wie :: vorher und :: nachher. Der einzige andere Aspekt von CSS, an den ich denken kann, der bis zu einem gewissen Grad Zeilenumbrüche aufdeckt, ist die Silbentrennung. Beim Silbentrennen geht es jedoch darum , in bestimmten Situationen ein Zeichen (normalerweise einen Bindestrich) am Zeilenende hinzuzufügen , während es hier darum geht , ein Zeichen (die vertikale Linie) zu entfernen , sodass ich einfach nicht sehen kann, wie man irgendeine Art anwendet der Silbentrennungslogik, auch mit Hilfe von Eigenschaften wie hyphenate-character.
Wir haben die word-spacingEigenschaft, die innerhalb einer Zeile angewendet wird, aber nicht an Zeilenanfängen und -enden, was vielversprechend erscheint, aber die Breite des Raums zwischen Wörtern definiert, nicht die zu verwendenden Zeichen.
Man fragt sich, ob es eine Möglichkeit gibt, die text-overflowEigenschaft zu verwenden, die die wenig bekannte Fähigkeit hat, zwei Werte für die Anzeige von Überlauftext sowohl links als auch rechts zu verwenden, wie in
text-overflow: '' '';
aber es scheint immer noch keinen offensichtlichen Weg zu geben, hier von A nach B zu gelangen.