Quería agregar a la respuesta de JOPLOmacedo. Su solución es mi favorita, pero siempre tuve problemas con la sangría cuando el li tenía más de una línea. Fue complicado encontrar la sangría correcta con márgenes, etc. Pero esto podría preocuparme solo a mí.
Para mí, el posicionamiento absoluto del :before
pseudo-elemento funciona mejor. Me puse padding-left
en ul, la posición negativa que queda en el :before
elemento, igual que la de ul padding-left
. Para obtener la distancia del contenido desde el :before
elemento correcto, solo configuro el padding-left
en el li. Por supuesto, el li tiene que tener una posición relativa. Por ejemplo
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 ... */
}
Esperemos que esto sea claro y tenga algún valor para alguien más que yo.