作者:mobiledu2502913517 | 来源:互联网 | 2023-05-27 19:09
我有 - 比方说 - 我的页面上有4个跨度.每个内容都由我的viewmodel中的knockout填充.有时几个内容的内容是空的.我想以一种漂亮的,逗号分隔的方式显示它们,考虑可能的空白.
我尝试了以下HTML和CSS.
版本1
它还显示空跨区的逗号
.comma:not(:last-child):after {
content: ", ";
}
A
B
D
版本2
如果最后一个跨度为空,它会显示(可视)最后一个逗号.
.comma:not(:empty):not(:last-child):after {
content: ", ";
}
A
B
C
无论差距在哪里(如果有的话),我怎么能调整它才能始终正确渲染?我只需要支持现代浏览器(IE9 +等).
1> fcalderan..:
我颠倒了逻辑,将逗号作为before
伪元素的内容
示例:http://codepen.io/anon/pen/NPdbbw
/* remove extra space before the comma */
.comma:not(:first-child) {
margin-left: -.3em;
}
/* no need to display empty elements */
.comma:empty {
display: none;
}
.comma:not(:first-child):before {
content: ", ";
}
如果第一个.comma
元素也可以为空,那么这是一个更复杂的方法
http://codepen.io/anon/pen/BypQRd
.comma:not(:first-child) {
margin-left: -.3em;
}
/* next 2 rules are for spacing when the first .comma is empty too */
.comma:first-child:empty ~ .comma:not(:empty) {
margin-left: 0;
}
.comma:first-child:empty ~ .comma:not(:empty) ~ .comma:not(:empty) {
margin-left: -.3em;
}
.comma:empty {
display: none;
}
.comma:not(:first-child):before {
content: ", ";
}
.comma:not(:first-child):before {
content: ", ";
}
.comma:empty + .comma:not(:empty):before {
content : "";
}
.comma:not(:empty) ~ .comma:empty + .comma:not(:empty):before {
content : ", ";
}
最后一个示例已经成功地针对4个元素的所有可能组合进行了测试
:empty
有关MDN上可用的伪类的更多信息