Je voudrais contrôler combien d'espace horizontal une balle pousse <li>
vers la droite dans un <ol>
ou <ul>
.
Autrement dit, au lieu d'avoir toujours
* Some list text goes
here.
J'aimerais pouvoir changer cela pour être
* Some list text goes
here.
ou
*Some list text goes
here.
J'ai regardé autour de moi, mais je n'ai trouvé que des instructions pour déplacer tout le bloc vers la gauche ou la droite, par exemple http://www.alistapart.com/articles/taminglists/
html
css
html-lists
Erjiang
la source
la source
Réponses:
Mettez son contenu dans un
span
qui est relativement positionné, vous pouvez alors contrôler l'espace par laleft
propriété duspan
.la source
<SPAN>
peut utiliserid
ouclass
balises, jetez un coup d'œil au W3C . Si la question est de savoir si elle peut transmettre une signification sémantique, voyez cette réponse . Techniquement, la<SPAN>
balise est un élément en ligne non sémantique en soi, mais d'une certaine manière qui offre plus de flexibilité dans sa réutilisation. De nos jours, je pense que l'on peut utiliser leinline-block
descripteur pour permettre une plus grande gamme d'options de formatage.Pour résumer les autres réponses ici - si vous voulez un contrôle plus fin sur l'espace entre les puces et le texte dans un
<li>
élément de liste, vos options sont:(1) Utilisez une image d'arrière-plan:
Avantages:
background-position
pour positionner l'image à peu près n'importe où par rapport au texte, en utilisant des pixels, des ems ou%Désavantages:
2. Utilisez un rembourrage sur l'
<li>
étiquetteAvantages:
<li>
, vous pouvez ajouter autant d' espace horizontal supplémentaire entre la puce et le texte que vous le souhaitezDésavantages:
(3) Enveloppez le texte dans un
<span>
élément supplémentaireAvantages:
padding-top
au<span>
. Quelqu'un d'autre peut avoir une solution de contournement pour cela, cependant ...)Désavantages:
Nous espérons de nouvelles fonctionnalités de style liste dans CSS4, afin que nous puissions créer des puces plus intelligentes sans recourir aux images ou au balisage exta :)
la source
outside
.display: block;
à l'élément span pour que le texte enveloppé s'aligne également (j'ai également fini par utiliser des balises d'ancrage au lieu de travées)Cela devrait le faire. Assurez-vous de placer vos balles vers l'extérieur. vous pouvez également utiliser des pseudo éléments CSS si vous pouvez les déposer dans IE7 vers le bas. Je ne recommande pas vraiment d'utiliser des pseudo éléments pour ce genre de chose, mais cela fonctionne pour contrôler la distance.
la source
list-style-position: outside
et le remplissage desLI
éléments vous permettent d'augmenter la distance entre les puces, mais cela ne fonctionne toujours pas dans l'autre sens au-delà d'un décalage spécifié par le navigateur. Voir ce JS Bin .text-indent
sur<UL>
ou<LI>
pour annuler la distance imposée par le navigateur entre la puce et le<LI>
contenu. Autrement dit, augmentezpadding-left
comme indiqué ci-dessus pour augmenter la distance et réduiseztext-indent
pour réduire la distance entre la puce et le contenu comme vous le souhaitez.<LI>
s'enroule dans une deuxième ligne, ces lignes suivantes finissent par être ré-indentées en fonction de la marge / du remplissage / du retrait que nous avons réussi à annuler pour la première ligne viatext-indent
. SighAncienne question, mais le pseudo élément: before fonctionne bien ici.
Cela fonctionne très bien et ne nécessite pas beaucoup de règles supplémentaires ou de HTML.
À votre santé!
la source
margin-left: -5px
(ou quelle que soit la valeur) réduira l'espace entre la puce et l'<li>
élémentPour le type de style liste: en ligne :
C'est presque la même chose que la réponse de DSMann8 mais moins de code css.
Vous avez juste besoin de
À votre santé
la source
list-style-position: inside
aussi, ce qui est génial!Vous pouvez utiliser l'
padding-left
attribut sur les éléments de la liste ( pas sur la liste elle-même!).la source
list-style-position
est défini sur la valeur par défautoutside
.<span>
élément uniquement à des fins de conception.L'utilisation de text-indent sur li fonctionne mieux.
retrait de texte: -x px; rapproche la balle de li et vice-versa.
L'utilisation de relative on span la gauche négative peut ne pas fonctionner correctement avec les anciennes versions d'IE. PS - évitez de donner des positions autant que vous le pouvez.
la source
Voici une autre solution utilisant un compteur css et des pseudo éléments. Je le trouve plus élégant car il ne nécessite pas l'utilisation de balisage html supplémentaire ni de classes css:
J'utilise des espaces non cassables pour que l'espacement n'affecte que la première ligne de mes éléments de liste (si l'élément de liste fait plus d'une ligne). Vous pouvez utiliser le remplissage ici à la place.
la source
Ancienne question mais toujours d'actualité. Je recommande d'utiliser le négatif
text-indent
.list-style-position
doit êtreoutside
.Avantages:
Les inconvénients:
la source
Une liste non ordonnée commence par la balise ul. Chaque élément de la liste commence par le Les éléments de la liste seront marqués par des puces (petits cercles noirs) par défaut:
Production:
La propriété text-indent spécifie l'indentation de la première ligne d'un bloc de texte.
Remarque: les valeurs négatives sont autorisées. La première ligne sera en retrait vers la gauche si la valeur est négative.
la source
Il semble que vous puissiez (un peu) contrôler l'espacement en utilisant un remplissage sur la balise <li>.
Le hic, c'est qu'il ne semble pas vous permettre de le serrer comme votre dernier exemple.
Pour cela, vous pouvez essayer de désactiver le type de type liste et d'utiliser & bull;
la source
Il semble y avoir une solution beaucoup plus propre si vous souhaitez uniquement réduire l'espacement entre la puce et le texte:
la source
Vous pouvez également utiliser un remplacement d'image d'arrière-plan comme alternative, vous donnant un contrôle total sur le positionnement vertical et horizontal.
Voir la réponse à cette question
la source
Définition et utilisation
La propriété list-style-position spécifie si les marqueurs d'élément de liste doivent apparaître à l'intérieur ou à l'extérieur du flux de contenu.
Source: http://www.w3schools.com/cssref/pr_list-style-position.asp
la source
Vous pouvez utiliser
ul li:before
et une image d'arrière-plan, et attribuerposition: relative
etposition:absolute
auxli
etli:before
, respectivement. De cette façon, vous pouvez créer une image et la positionner où vous le souhaitez par rapport au li.la source
Utiliser
padding-left:1em; text-indent:-1em
pour le<li>
tag.Ensuite,
list-style-position: inside
pour le<ul>
tag.la source
La solution suivante fonctionne bien lorsque vous souhaitez rapprocher le texte de la puce et même si vous avez plusieurs lignes de texte.
margin-right
vous permet de rapprocher le texte de la pucetext-indent
garantit que plusieurs lignes de texte s'alignent toujours correctementla source
utiliser
<span style="display: flex;">
à l'intérieur de chacun<li>
.la source