Aggiungendo un'altra risposta a questa domanda perché avevo bisogno esattamente di ciò che @derek stava chiedendo e ero già andato un po 'oltre prima di vedere le risposte qui. In particolare, avevo bisogno di CSS che potessero anche tenere conto del caso con esattamente due voci di elenco, in cui la virgola NON è desiderata. Ad esempio, alcune righe di autore che volevo produrre sarebbero simili alle seguenti:
Un autore:
By Adam Smith.
Due autori:
By Adam Smith and Jane Doe.
Tre autori:
By Adam Smith, Jane Doe, and Frank Underwood.
Le soluzioni già fornite qui funzionano per un autore e per 3 o più autori, ma trascura di tenere conto del caso dei due autori, dove lo stile "Oxford Comma" (noto anche come stile "Harvard Comma" in alcune parti) non si applica - cioè, non dovrebbe esserci alcuna virgola prima della congiunzione.
Dopo un pomeriggio di armeggiare, mi è venuto in mente quanto segue:
<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>
Visualizza i sottotitoli come li ho sopra.
Alla fine, ho dovuto anche sbarazzarmi degli spazi vuoti tra gli lielementi, per evitare un fastidio: la proprietà inline-block avrebbe altrimenti lasciato uno spazio prima di ogni virgola. Probabilmente c'è un trucco decente alternativo per questo, ma non è questo l'argomento di questa domanda, quindi lo lascerò a qualcun altro per rispondere.
Fiddle qui: http://jsfiddle.net/5REP2/