我有很多跨度,形成一个枚举:
<span class="item">Value 1</span><span class="delim">, </span>
<span class="item">Value 2</span><span class="delim">, </span>
<span class="item">Value 3</span>
当所有item
都有display:inline
时都可以,但是当我向第display:none
个范围添加item
的类时,结果如下所示:< / p>
值1 ,,值2
我在CSS中找不到这个问题的解决方案,并且使用JS是不可取的(切换可见性的代码已经很复杂了。)
有什么想法吗?
UPDATE。截至目前,所有提议的解决方案都错过了item
跨度中的任何一个都可以隐藏或可见的事实,而不仅仅是第二个。问题不仅在于中间的双逗号,而且还有一个额外的逗号。
答案 0 :(得分:3)
只用CSS的简单解决方案:
.item:before{
content: ", ";
}
.item:first-child:before{
content: "";
}
答案 1 :(得分:2)
这就是你要追求的吗?
.hidden {
display: none;
}
.hidden + .delim {
display: none;
}
它给出了
值1,值3
这看起来像对兄弟选择器的一个很好的介绍:http://css-tricks.com/child-and-sibling-selectors/。你可能应该了解它们 - 它们非常强大。
答案 2 :(得分:1)
那是因为带有值的跨度不是分隔跨度的父级。为了在隐藏值范围时隐藏分隔符,您必须在值范围内包含它们,如下所示:
<span class="item">Value 1<span class="delim">, </span></span>
<span class="item">Value 2<span class="delim">, </span></span>
<span class="item">Value 3</span>
答案 3 :(得分:1)
解决方案是使用所谓的general sibling selector:
.item.active ~ .item.active:before {
content: ', ';
}
逗号只会在那些可见项目之前插入,其父项具有另一个可见项目作为子项,并且该子项位于文档中的前面。