Просто
li + li::before {
content: " | ";
}
Звичайно, це насправді не вирішує проблему ОП. Він хоче вилучити вертикальні смуги на початку та в кінці рядків залежно від того, де вони розбиті. Я вийду на кінцівку і стверджую, що ця проблема не розв'язується за допомогою CSS, і навіть не з JS, якщо хтось не хоче по суті переписати логіку вимірювання тексту / макета / розбиття рядків в браузері.
Єдиними шматочками CSS, наскільки я бачу, що "знають" про розрив рядків, по-перше, ::first-lineпсевдоелемент, який нам тут не допомагає - у будь-якому випадку, він обмежений кількома презентаційними атрибутами, і не працює разом із такими речами, як :: before та :: after. Єдиний інший аспект CSS, про який я думаю, який певною мірою виявляє розрив рядків - це перенос. Однак дефіс полягає у додаванні символу (зазвичай тире) до кінця рядків у певних ситуаціях, тоді як тут ми стурбовані видаленням символу (вертикальної лінії), тому я просто не можу зрозуміти, як застосувати будь-який вид логіки, пов’язаної з переносом, навіть за допомогою властивостей, таких як hyphenate-character.
Ми маємо word-spacingвластивість, яка застосовується всередині рядка, але не на початку та закінченні рядка, що здається перспективним, але воно визначає ширину простору між словами, а не символ (и), який буде використано.
Хтось задається питанням, чи є якийсь спосіб використовувати text-overflow властивості, яка має маловідому здатність приймати два значення для відображення тексту переповнення як ліворуч, так і праворуч, як у
text-overflow: '' '';
але, здається, тут ще немає жодного очевидного способу дістатися від А до В.