有一个元素列表,可以是多行的。例子:
.container {
width: 440px;
text-align: center;
}
.item {
display: inline-block;
background-color: #ffd473;
border-radius: 4px;
padding: 5px;
margin: 3px;
font-weight: bold;
}
.sep {
margin: 0 10px;
}
<div class="container">
<span class="item">MenuItem1</span>
<span class="sep"> ❤️ </span>
<span class="item">Item2</span>
<span class="sep"> ❤️ </span>
<span class="item">SomeText</span>
<span class="sep"> ❤️ </span>
<span class="item">Hi all</span>
<span class="sep"> ❤️ </span>
<span class="item">MenuItem5</span>
<span class="sep"> ❤️ </span>
<span class="item">MenuItem6</span>
<span class="sep"> ❤️ </span>
<span class="item">MenuItem very long text</span>
<span class="sep"> ❤️ </span>
<span class="item">More text</span>
<span class="sep"> ❤️ </span>
<span class="item">More else text</span>
<span class="sep"> ❤️ </span>
<span class="item">item10</span>
</div>
对任何 css 或 js 解决方案都满意。事先不知道菜单项的大小和数量。也就是说,该解决方案应该适用于任何菜单项和任何容器大小。

一个愚蠢但通用的解决方案(除非单个内联元素的高度差异无法通过阈值补偿
threshold):通过添加右边距检查改进了 @hu-fo-of-ex 变体。因为在左边缘的情况下,没有出现分隔符最初不是落在行尾而是落在开头的情况。