Je veux avoir une liste "intérieure" avec des puces de liste ou des nombres décimaux affleurant tous avec des blocs de texte supérieurs. Les deuxièmes lignes des entrées de liste doivent avoir le même retrait que la première ligne!
Par exemple:
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aenean commodo ligula eget dolor. Aenean Aenean massa.
Cum sociis natoque penatibus et magnis dis parturient montes,
nascetur ridiculus mus. Donec quam felis,
1. Text
2. Text
3. longer Text, longer Text, longer Text, longer Text, longer Text, longer Text
second line of longer Text
4. Text
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aenean commodo ligula eget dolor.
CSS ne fournit que deux valeurs pour sa "position de style de liste" - à l'intérieur et à l'extérieur. Avec "l'intérieur", les deuxièmes lignes sont alignées avec les points de liste et non avec la ligne supérieure:
3. longer Text, longer Text, longer Text, longer Text, longer Text, longer Text
second line of longer Text
4. Text
La largeur "à l'extérieur" de ma liste n'est plus affleurante avec des blocs de texte supérieurs.
Les tests de largeur avec retrait de texte, remplissage à gauche et marge à gauche fonctionnent pour les listes non ordonnées, mais ils échouent pour les listes ordonnées car cela dépend du nombre de caractères de la liste décimale:
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aenean commodo ligula eget dolor.
3. longer Text, longer Text, longer Text, longer Text, longer Text, longer Text
second line of longer Text
4. Text
11. Text
12. Text
"11." et "12." ne sont pas à égalité avec le bloc de texte supérieur par rapport à "3." et "4.".
Alors, où est le secret des listes ordonnées et du tiret de deuxième ligne? Merci pour votre effort!
la source
Réponses:
Mettre à jour
Cette réponse est dépassée. Vous pouvez le faire beaucoup plus simplement, comme indiqué dans une autre réponse ci-dessous:
Voir https://www.w3schools.com/cssref/pr_list-style-position.asp
Réponse originale
Je suis surpris de voir que cela n'a pas encore été résolu. Vous pouvez utiliser l'algorithme de disposition des tableaux du navigateur (sans utiliser de tableaux) comme ceci:
Démo: http://jsfiddle.net/4rnNK/1/
Pour le faire fonctionner dans IE8, utilisez la
:before
notation héritée avec un deux-points.la source
foo
est juste une chaîne arbitraire (id), elle est utilisée pour connecter les propriétéscounter-reset
,counter-increment
etcounter()
.position: relative
sur<li>
etposition: absolute
sur le contenu généré. Voir jsfiddle.net/maryisdead/kgr4k pour un exemple.40px
? Cela se cassera lorsque les compteurs seront plus larges que cela . L'intérêt de la disposition des tableaux est que le navigateur adaptera automatiquement le contenu.Je crois que cela fera ce que vous recherchez.
JSFiddle: https://jsfiddle.net/dzbos70f/
la source
1em
n'égale pas l'espace du retrait. Les lignes ne s'aligneront pas parfaitement au niveau des pixels. Deuxièmement, qu'en est-il lorsque la liste atteint le numéro 10? 100? Le retrait de texte ne fonctionnera pas, il ne sera pas aligné. Cette réponse devrait être rejetée.1em
. oi60.tinypic.com/a0eyvs.jpg Le premier élément de liste utilise la technique de retrait de texte ci-dessus. Comparé à ce à quoi il ressemble normalement avec la position de style liste: à l'extérieur, il est mal aligné, décalé d'un pixel dans ce cas.Le moyen le plus simple et le plus propre, sans aucun piratage, consiste simplement à mettre en retrait le
ul
(ouol
), comme ceci:Cela donne le même résultat que la réponse acceptée: https://jsfiddle.net/5wxf2ayu/
Capture d'écran:
la source
list-style-position: outside
à<li>
.Vérifiez ce violon:
http://jsfiddle.net/K6bLp/
Il montre comment indenter manuellement ul et ol en utilisant CSS.
HTML
CSS
J'ai aussi édité ton violon
http://jsfiddle.net/j7MEd/3/
Prenez-en note.
la source
type
attribut pour<ol>
semble obsolète en HTML 5. Utilisez-le à lastyle="list-style-type: "
place.Vous pouvez définir la marge et le remplissage d'un
ol
ouul
en CSSla source
Je crois que vous avez juste besoin de mettre la liste "bullet" en dehors du rembourrage.
la source
Vous pouvez utiliser CSS pour sélectionner une plage; dans ce cas, vous voulez lister les éléments 1-9:
Ajustez ensuite les marges sur ces premiers éléments de manière appropriée:
Voyez-le en action ici: http://www.wortfm.org/wort-madison-charts-for-the-week-beginning-11192012/
la source
Le CSS suivant a fait l'affaire:
la source
ma solution est tout à fait la même que celle de Pumbaa80 , mais je suggère d'utiliser à la
display: table
place dedisplay:table-row
forli
element. Ce sera donc quelque chose comme ceci:Alors maintenant, nous pouvons utiliser des marges pour l'espacement entre
li
lesla source
J'aime bien cette solution moi-même:
la source
Les listes ol, ul fonctionneront si vous le souhaitez, vous pouvez également utiliser une table avec bordure: aucune dans le css.
la source
CSS ne fournit que deux valeurs pour sa "position de style de liste" - à l'intérieur et à l'extérieur. Avec "l'intérieur", les deuxièmes lignes sont alignées avec les points de liste et non avec la ligne supérieure:
Dans les listes ordonnées, sans intervention, si vous donnez à "position-style-liste" la valeur "à l'intérieur", la deuxième ligne d'un long élément de liste n'aura pas de retrait, mais retournera au bord gauche de la liste (c'est-à-dire qu'elle sera aligné à gauche avec le numéro de l'article). Ceci est particulier aux listes ordonnées et ne se produit pas dans les listes non ordonnées.
Si vous donnez à la place à "list-style-position" la valeur "outside", la deuxième ligne aura le même retrait que la première ligne.
J'avais une liste avec une bordure et j'ai eu ce problème. Avec "list-style-position" réglé sur "inside", ma liste ne ressemblait pas à ce que je voulais. Mais avec "list-style-position" réglé sur "outside", les numéros des éléments de la liste sont sortis de la boîte.
J'ai résolu cela en définissant simplement une marge gauche plus large pour toute la liste, ce qui a repoussé toute la liste vers la droite, dans la position dans laquelle elle se trouvait auparavant.
CSS:
ol.classname {margin: 0; padding: 0;}
ol.classname li {margin: 0.5em 0 0 0; padding-left: 0; list-style-position: outside;}
HTML:
la source
Ok, je suis retourné et j'ai trouvé certaines choses. C'est une SOLUTION RUGUEUSE à ce que je proposais, mais elle semble être fonctionnelle.
Tout d'abord, j'ai fait des chiffres une série de listes non ordonnées. Une liste non ordonnée aura normalement un disque au début de chaque élément de la liste (
Ensuite, j'ai fait afficher la liste entière: tableau-ligne. Ici, pourquoi ne pas simplement vous coller le code au lieu de bavarder à ce sujet?
CSS:
}
}
Cela semble aligner le texte de la 2e div avec les numéros de la liste ordonnée de la première div. J'ai entouré à la fois la liste et le texte d'une balise afin que je puisse simplement dire à toutes les divs de s'afficher sous forme de blocs en ligne. Cela les alignait bien.
La marge est là pour mettre un espace entre la période et le début du texte. Sinon, ils se heurtent et cela ressemble à une horreur.
Mon employeur voulait que le texte enveloppé (pour les entrées bibliographiques plus longues) s'aligne sur le début de la première ligne, pas sur la marge de gauche. À l'origine, je manipulais une marge positive et un retrait de texte négatif, mais j'ai réalisé que lorsque je suis passé à deux divisions différentes, cela a eu pour effet de faire en sorte que le texte soit aligné parce que la marge de gauche de la division était la marge où le texte commençait naturellement. Ainsi, tout ce dont j'avais besoin était d'une marge de 0,2em pour ajouter de l'espace, et tout le reste était aligné à la nage.
J'espère que cela aide si OP avait un problème similaire ... J'ai eu du mal à le comprendre.
la source
J'ai eu ce même problème et j'ai commencé à utiliser la réponse de user123444555621 . Cependant, je devais également ajouter
padding
et unborder
à chacunli
, ce que cette solution ne permet pas car chacunli
est untable-row
.Tout d'abord, nous utilisons a
counter
pour reproduire lesol
nombres de.Nous avons ensuite mis
display: table;
sur chacunli
etdisplay: table-cell
sur le:before
pour nous donner l'indentation.Enfin, la partie délicate. Étant donné que nous n'utilisons pas une disposition de tableau pour l'ensemble,
ol
nous devons nous assurer que chacun a:before
la même largeur. Nous pouvons utiliser l'ch
unité pour garder à peu près la largeur égale au nombre de caractères. Afin de garder les largeurs uniformes lorsque le nombre de chiffres:before
diffère, nous pouvons implémenter des requêtes de quantité . En supposant que vous savez que vos listes ne contiendront pas 100 articles ou plus, vous n'avez besoin que d'une règle de requête de quantité pour indiquer:before
de changer sa largeur, mais vous pouvez facilement en ajouter d'autres.la source