Я хотів додати відповідь JOPLOmacedo. Його рішення моє улюблене, але у мене завжди були проблеми з відступом, коли у лі було більше одного рядка. Сміливо було знайти правильний відступ з маржами тощо. Але це може стосуватися лише мене.
Для мене :beforeнайкраще працює абсолютне позиціонування псевдоелемента. Я встановив padding-leftul, негативне положення, залишене на :beforeелементі, те саме, що і ul padding-left. Щоб отримати відстань вмісту від :beforeелемента, я просто встановив padding-leftзначення li. Звичайно, у лі має бути відносне положення. Наприклад
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 ... */
}
Сподіваємось, це зрозуміло і має певну цінність для когось іншого, ніж я.