html - 在无序列表中的元素之后添加竖线分隔符,除非该元素是一行中的最后一个

标签 html css

是否可以设置此 html 的样式...

<ul>
    <li>Dogs</li>
    <li>Cats</li>
    <li>Lions</li>
    <li>Tigers</li>
    <li>Zebras</li>
    <li>Giraffes</li>
    <li>Bears</li>
    <li>Hippopotamuses</li>
    <li>Antelopes</li>
    <li>Unicorns</li>
    <li>Seagulls</li>
</ul>

...像这样...

enter image description here

...不向特定列表项添加类,或求助于 javascript?如果是这样的话?

换行符不固定;列表变宽以占用额外空间,列表项居中对齐。

最佳答案

只是

li + li::before {
    content: " | ";
}

当然,这并不能真正解决OP的问题。他想根据断开的位置省略行首和行尾的竖线。我会冒险断言这个问题无法使用 CSS 解决,甚至使用 JS 也无法解决,除非有人想从本质上重写浏览器引擎的文本测量/布局/换行逻辑。

据我所知,唯一“知道”换行的 CSS 片段首先是 ::first-line 伪元素,它在这里对我们没有帮助- - 在任何情况下,它都仅限于一些表示属性,并且不能与::before 和::after 之类的东西一起使用。我能想到的 CSS 的唯一另一个在某种程度上暴露换行符的方面是连字符。然而,断字就是在某些情况下添加一个字符(通常是破折号)到行尾,而这里我们关心的是删除一个字符(竖线) ), 所以我看不出如何应用任何类型的连字相关逻辑,即使借助 hyphenate-character 等属性也是如此。

我们有 word-spacing 属性,它应用于行内而不是行首和行尾,这看起来很有希望,但它定义了单词之间的空间宽度,而不是字符(s) 被使用。

有人想知道是否有某种方法可以使用 text-overflow 属性,它具有鲜为人知的能力,可以采用两个值来显示左侧和右侧的溢出文本,如

text-overflow: '' '';

但是这里似乎仍然没有任何明显的方法可以从 A 到 B。

关于html - 在无序列表中的元素之后添加竖线分隔符,除非该元素是一行中的最后一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9171699/

相关文章:

html - 响应式页脚设计 - 包装页脚元素

jQuery Mobile Listview 长项

javascript - jQuery $().css ("content") 在 IE9 中返回字符串 "normal"

javascript - 无法在 'setProperty' : These styles are computed, 上执行 'CSSStyleDeclaration',因此 'opacity' 属性为只读

javascript - jQuery隐藏最近(“div”)不起作用

html - 如何添加技术支持 : on a banner advertising?

html - Foundation 5 Tabs - 内容不是选项卡容器的填充宽度

javascript - Cakephp 复选框 CSS 不工作

php - TinyMCE 向图像 url 添加额外的斜杠

javascript - 当另一个打开时,我需要什么代码来折叠一个 div?