Добавил еще один ответ на этот вопрос, потому что мне нужно было именно то, о чем просил @derek, и я уже продвинулся немного дальше, прежде чем увидел здесь ответы. В частности, мне был нужен CSS, который также мог бы учитывать случай с двумя элементами списка, где запятая НЕЛЬЗЯ. Например, некоторые авторские подписи, которые я хотел создать, будут выглядеть следующим образом:
Один автор:
By Adam Smith.
Два автора:
By Adam Smith and Jane Doe.
Три автора:
By Adam Smith, Jane Doe, and Frank Underwood.
Решения, уже приведенные здесь, работают для одного автора и для трех или более авторов, но не учитывают случай двух авторов, когда стиль «Оксфордская запятая» (также известный как стиль «Гарвардская запятая» в некоторых частях) не применяется. - т.е. перед союзом не должно быть запятой.
После полудня возни я пришел к следующему:
<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/