Bu soruya bir cevap daha eklemek, çünkü @derek'in tam olarak ne istediğine ihtiyacım vardı ve cevapları burada görmeden önce biraz daha ileri gitmiştim. Spesifik olarak, virgülün istenmediği tam olarak iki liste öğesiyle durumu da açıklayabilecek CSS'ye ihtiyacım vardı . Örnek olarak, üretmek istediğim bazı yazar imzaları şuna benzer:
Bir yazar:
By Adam Smith.
İki yazar:
By Adam Smith and Jane Doe.
Üç yazar:
By Adam Smith, Jane Doe, and Frank Underwood.
Burada zaten verilen çözümler bir yazar ve 3 veya daha fazla yazar için işe yarıyor, ancak iki yazar vakasını açıklamayı ihmal ediyor — burada "Oxford Virgül" stili (bazı bölümlerde "Harvard Virgül" stili olarak da bilinir) geçerli değildir - yani, bağlantıdan önce virgül olmamalıdır.
Bir öğleden sonra kurcalamadan sonra şunu buldum:
<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>
İmza çizgilerini yukarıda anladığım gibi gösteriyor.
Sonunda, libir sıkıntının üstesinden gelmek için öğeler arasındaki boşluklardan da kurtulmak zorunda kaldım : aksi takdirde satır içi blok özelliği her virgülden önce bir boşluk bırakırdı. Muhtemelen bunun için iyi bir alternatif hack var ama bu sorunun konusu bu değil, bu yüzden bunu başka birinin cevaplaması için bırakacağım.
Burada keman çalın: http://jsfiddle.net/5REP2/