为这个问题添加另一个答案,因为我确实需要@derek的要求,并且在这里看到答案之前我已经走了一些距离。具体来说,我需要CSS,它也可以用两个列表项来说明这种情况,其中不需要逗号。例如,我想制作的一些作者身份标记如下所示:
一位作者:
By Adam Smith.
两位作者:
By Adam Smith and Jane Doe.
三位作者:
By Adam Smith, Jane Doe, and Frank Underwood.
这里已经给出的解决方案适用于一位作者和3位或更多位作者,但忽略了两位作者的情况-“牛津逗号”样式(在某些部分中也称为“哈佛逗号”样式)不适用-即,在连词之前不应包含逗号。
经过一个下午的修补,我想到了以下几点:
<html>
<head>
<style type="text/css">
.byline-list {
list-style: none;
padding: 0;
margin: 0;
}
.byline-list > li {
display: inline;
padding: 0;
margin: 0;
}
.byline-list > li::before {
content: ", ";
}
.byline-list > li:last-child::before {
content: ", and ";
}
.byline-list > li:first-child + li:last-child::before {
content: " and ";
}
.byline-list > li:first-child::before {
content: "By ";
}
.byline-list > li:last-child::after {
content: ".";
}
</style>
</head>
<body>
<ul class="byline-list">
<li>Adam Smith</li>
</ul>
<ul class="byline-list">
<li>Adam Smith</li><li>Jane Doe</li>
</ul>
<ul class="byline-list">
<li>Adam Smith</li><li>Jane Doe</li><li>Frank Underwood</li>
</ul>
</body>
</html>
当我在上面看到它们时,它会显示标记。
最后,我还必须摆脱li
元素之间的任何空格,以消除烦恼:inline-block属性否则将在每个逗号之前保留一个空格。可能有一个不错的替代方法,但这不是此问题的主题,因此我将其留给他人回答。
在这里提琴:http : //jsfiddle.net/5REP2/