Saya ingin menambahkan jawaban JOPLOmacedo. Solusinya adalah favorit saya, tetapi saya selalu memiliki masalah dengan indentasi ketika li memiliki lebih dari satu baris. Itu fiddly untuk menemukan lekukan yang benar dengan margin dll. Tapi ini mungkin hanya menyangkut saya.
Bagi saya pemosisian absolut :beforeelemen pseudo bekerja paling baik. Saya atur padding-leftpada ul, posisi negatif tersisa pada :beforeelemen, sama dengan ul padding-left. Untuk mendapatkan jarak konten dari :beforeelemen dengan benar, saya hanya mengatur padding-leftli. Tentu saja li harus memiliki posisi relatif. Sebagai contoh
ul {
margin: 0 0 1em 0;
padding: 0 0 0 1em;
/* make space for li's :before */
list-style: none;
}
li {
position: relative;
padding-left: 0.4em;
/* text distance to icon */
}
li:before {
font-family: 'my-icon-font';
content: 'character-code-here';
position: absolute;
left: -1em;
/* same as ul padding-left */
top: 0.65em;
/* depends on character, maybe use padding-top instead */
/* .... more styling, maybe set width etc ... */
}
Semoga ini jelas dan memiliki nilai bagi orang lain selain saya.