Додаю ще одну відповідь на це запитання, бо мені було потрібно саме те, про що просив @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
елементами, щоб обійти роздратування: властивість вбудованого блоку інакше залишать пробіл перед кожною комою. Напевно, є альтернативний гідний хакер для цього, але це не тема цього питання, тому я залишу це для того, щоб відповісти хтось інший.
Скрипаль тут: http://jsfiddle.net/5REP2/