Dodając kolejną odpowiedź na to pytanie, ponieważ potrzebowałem dokładnie tego, o co prosił @derek i już poszedłem trochę dalej, zanim zobaczyłem odpowiedzi tutaj. W szczególności potrzebowałem CSS, który mógłby również uwzględniać przypadek z dokładnie dwoma elementami listy, gdzie przecinek NIE jest pożądany. Na przykład, niektóre wpisy autorstwa, które chciałem stworzyć, wyglądałyby następująco:
Jeden autor:
By Adam Smith.
Dwóch autorów:
By Adam Smith and Jane Doe.
Trzech autorów:
By Adam Smith, Jane Doe, and Frank Underwood.
Podane tutaj rozwiązania działają dla jednego autora i dla 3 lub więcej autorów, ale pomijają przypadek dwóch autorów - gdzie styl „przecinka oksfordzkiego” (w niektórych częściach znany również jako „przecinek Harvard”) nie ma zastosowania - tj. przed spójnikiem nie powinno być przecinka.
Po popołudniu majsterkowania wymyśliłem następujące rzeczy:
<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>
Wyświetla listę boczną, tak jak mam je powyżej.
Ostatecznie musiałem również pozbyć się białych znaków między lielementami, aby obejść irytację: w przeciwnym razie właściwość inline-block pozostawiłaby spację przed każdym przecinkiem. Prawdopodobnie istnieje alternatywny, przyzwoity hack, ale nie jest to przedmiotem tego pytania, więc zostawię to komuś innemu, aby mógł odpowiedzieć.
Fiddle tutaj: http://jsfiddle.net/5REP2/