Je dois utiliser, par exemple, le symbole étoile (★) comme puce pour un élément de liste.
J'ai lu le module CSS3: Listes , qui décrit l'utilisation du texte personnalisé en tant que puces, mais cela ne fonctionne pas pour moi. Je pense que les navigateurs ne supportent tout simplement pas le ::marker
pseudo élément.
Comment puis-je le faire sans utiliser d'images?
EDIT
Je ne recommanderais probablement plus d'utiliser des images. Je m'en tiens à l'approche consistant à utiliser un caractère Unicode, comme ceci:
li:before {
content: "\2605";
}
ANCIENNE RÉPONSE
J'irais probablement pour un fond d'image, ils sont beaucoup plus efficace polyvalent et compatible avec plusieurs navigateurs.
Voici un exemple:
<style type="text/css">
ul {list-style:none;} /* you should use a css reset too... ;) */
ul li {background:url(images/icon_star.gif) no-repeat 0 5px;}
</style>
<ul>
<li>List Item 1</li>
<li>List Item 2</li>
<li>List Item 3</li>
</ul>
Utilisation li:before
avec une entité HTML hexadécimale échappée (ou tout texte brut).
Exemple
Mon exemple produira des listes avec des coches en tant que puces.
[~ # ~] css [~ # ~]:
ul {
list-style: none;
padding: 0px;
}
ul li:before
{
content: '\2713';
margin: 0 1em; /* any design */
}
Compatibilité du navigateur
Je n'ai pas testé moi-même, mais il devrait être pris en charge à partir de IE8. Du moins c'est ce que quirksmode & css-tricks .
Vous pouvez utiliser des commentaires conditionnels pour appliquer des solutions plus anciennes/plus lentes, telles que des images ou des scripts. Mieux encore, utilisez les deux avec <noscript>
pour les images.
[~ # ~] html [~ # ~]:
<!--[if lt IE 8]>
*SCRIPT SOLUTION*
<noscript>
*IMAGE SOLUTION*
</noscript>
<![endif]-->
À propos des images d'arrière-plan
Les images de fond sont en effet faciles à manipuler, mais ...
background-size
est en réalité uniquement à partir de IE9.list-style
(le choix le plus logique) plus facile.Prendre plaisir.
Vous pouvez le construire:
#modal-select-your-position li {
/* handle multiline */
overflow: visible;
padding-left: 17px;
position: relative;
}
#modal-select-your-position li:before {
/* your own marker in content */
content: "—";
left: 0;
position: absolute;
}
C'est la solution du W3C. Vous pouvez l'utiliser en 3012!
ul { list-style-type: "★"; } /* Sets the marker to a "star" character */
Les images ne sont pas recommandées car elles peuvent apparaître pixellisées sur certains appareils (appareils Apple avec affichage Retina) ou lors d'un zoom avant. Avec un personnage, votre liste est toujours impressionnante.
Voici la meilleure solution que j'ai trouvée jusqu'à présent. Cela fonctionne très bien et il est multi-navigateur (IE 8+).
ul {
list-style: none;
padding-left: 1.2em;
text-indent: -1.2em;
}
li:before {
content: "►";
display: block;
float: left;
width: 1.2em;
color: #ff0000;
}
L'important est de placer le caractère dans un bloc flottant de largeur fixe afin que le texte reste aligné s'il est trop long pour tenir sur une seule ligne. 1.2em est la largeur que vous souhaitez pour votre personnage, changez-la selon vos besoins. N'oubliez pas de réinitialiser le remplissage et la marge pour les éléments ul et li.
EDIT: Sachez que la taille "1.2em" peut varier si vous utilisez une police différente dans ul et li: before. Il est plus prudent d'utiliser des pixels.
Pour ajouter une étoile, utilisez le caractère Unicode 22C6
.
J'ai ajouté un espace pour faire un petit écart entre le li
et l'étoile. Le code pour l'espace est A0
.
li:before {
content: '\22C6\A0';
}
Un exemple plus complet de réponse de 222 :
ul {
list-style:none;
padding: 0 0 0 2em; /* padding includes space for character and its margin */
/* IE7 and lower use default */
*list-style: disc;
*padding: 0 0 0 1em;
}
ul li:before {
content: '\25BA';
font-family: "Courier New", courier, "Lucida Sans Typewriter", "Lucida Typewriter", monospace;
margin: 0 1em 0 -1em; /* right margin defines spacing between bullet and text. negative left margin pushes back to the Edge of the parent <ul> */
/* IE7 and lower use default */
*content: none;
*margin: 0;
}
ul li {
text-indent: -1em; /* negative text indent brings first line back inline with the others */
/* IE7 and lower use default */
*text-indent: 0;
}
J'ai inclus des propriétés star-hack pour restaurer les styles de liste par défaut dans les versions plus anciennes IE. Vous pouvez les extraire et les inclure dans une inclusion conditionnelle si vous le souhaitez, ou les remplacer par une image de fond Mon humble avis est que les styles de balle spéciaux ainsi implémentés devraient se dégrader gracieusement sur les quelques navigateurs qui ne prennent pas en charge les pseudosélecteurs.
Testé dans Firefox, Chrome, Safari et IE8-10 et rend correctement dans tous.
ul {
list-style-type: none;
}
ul li:before {
content:'*'; /* Change this to unicode as needed*/
width: 1em !important;
margin-left: -1em;
display: inline-block;
}
Essayez ce code ...
li:before {
content: "→ "; /* caractère UTF-8 */
}