Je veux une liste "interne" avec des puces ou des nombres décimaux alignés avec des blocs de texte supérieurs. Les deuxièmes lignes des entrées de la 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 "dedans", les deuxièmes lignes sont alignées avec les points de la 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 "en dehors" de ma liste n'est plus alignée avec les blocs de texte supérieurs.
Les expériences width text-indent, padding-left et margin-left fonctionnent pour les listes non ordonnées mais échouent pour les listes ordonnées car elles dépendent 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 alignés avec le bloc de texte supérieur par rapport à "3." et "4.".
Alors, où est le secret sur les listes ordonnées et le deuxième tiret de la ligne? Merci pour votre effort!
Cette réponse est obsolète. Vous pouvez le faire beaucoup plus simplement. Comme je l'ai dit, je suis surpris de voir que cela n'a pas encore été résolu. Vous pouvez utiliser l'algorithme de présentation de la table du navigateur (sans utiliser de table) comme ceci:
ul {
list-style-position: outside;
}
Voir https://www.w3schools.com/cssref/pr_list-style-position.asp
ol {
counter-reset: foo;
display: table;
}
ol > li {
counter-increment: foo;
display: table-row;
}
ol > li::before {
content: counter(foo) ".";
display: table-cell; /* aha! */
text-align: right;
}
Démo: http://jsfiddle.net/4rnNK/1/
Pour que cela fonctionne dans IE8, utilisez la notation héritée :before
avec un colon.
Je crois que cela fera ce que vous recherchez.
.cssClass li {
list-style-type: disc;
list-style-position: inside;
text-indent: -1em;
padding-left: 1em;
}
JSFiddle: https://jsfiddle.net/dzbos70f/
Le moyen le plus simple et le plus propre, sans aucun piratage, consiste simplement à indenter la ul
(ou ol
), comme suit:
ol {
padding-left: 40px;
list-style-position: outside;
}
Cela donne le même résultat que la réponse acceptée: https://jsfiddle.net/af2fqryz/
Capture d'écran:
Vérifiez ce violon:
Il montre comment indenter manuellement ul et ol à l'aide de CSS.
HTML
<head>
<title>Lines</title>
</head>
<body>
<ol type="1" style="list-style-position:inside;">
<li>Text</li>
<li>Text</li>
<li >longer Text, longer Text, longer Text, longer Text second line of longer Text </li>
</ol>
<br/>
<ul>
<li>Text</li>
<li>Text</li>
<li>longer Text, longer Text, longer Text, longer Text second line of longer Text </li>
</ul>
</body>
CSS
ol
{
margin:0px;
padding-left:15px;
}
ol li
{
margin: 0px;
padding: 0px;
text-indent: -1em;
margin-left: 1em;
}
ul
{
margin:0;
padding-left:30px;
}
ul li
{
margin: 0px;
padding: 0px;
text-indent: 0.5em;
margin-left: -0.5em;
}
J'ai aussi édité ton violon
Prenez-en note.
Vous pouvez définir la marge et le remplissage d'un ol
ou ul
en CSS
ol {
margin-left: 0;
padding-left: 3em;
list-style-position: outside;
}
Je crois que vous avez juste besoin de mettre la liste "balle" en dehors du rembourrage.
li {
list-style-position: outside;
padding-left: 1em;
}
Vous pouvez utiliser CSS pour sélectionner une plage. dans ce cas, vous voulez lister les articles 1-9:
ol li:nth-child(n+1):nth-child(-n+9)
Puis ajustez les marges sur ces premiers éléments de manière appropriée:
ol li:nth-child(n+1):nth-child(-n+9) { margin-left: .55em; }
ol li:nth-child(n+1):nth-child(-n+9) em,
ol li:nth-child(n+1):nth-child(-n+9) span { margin-left: 19px; }
Voyez le en action ici: http://www.wortfm.org/wort-madison-charts-for-the-week-beginning-11192012/
ma solution est tout à fait la même que celle de Pumbaa8 , mais je suggère d'utiliser display: table
au lieu de display:table-row
pour l'élément li
. Donc ce sera quelque chose comme ça:
ol {
counter-reset: foo; /* default display:list-item */
}
ol > li {
counter-increment: foo;
display: table; /* instead of table-row */
}
ol > li::before {
content: counter(foo) ".";
display: table-cell;
text-align: right;
}
Alors maintenant, nous pouvons utiliser des marges pour l'espacement entre li
'
J'aime beaucoup cette solution moi-même:
ul {
list-style-position: inside;
list-style-type: disc;
font-size: 12px;
line-height: 1.4em;
padding: 0 1em;
}
ul li {
margin: 0 0 0 1em;
padding: 0 0 0 1em;
text-indent: -2em;
}
Le CSS suivant a fait l'affaire:
ul{
margin-left: 1em;
}
li{
list-style-position: outside;
padding-left: 0.5em;
}
Les listes ol, ul fonctionneront si vous le souhaitez, vous pouvez également utiliser une table avec border: aucune dans le css.
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 secondes lignes affleurent aux points de la liste et non à la ligne supérieure:
Dans les listes ordonnées, sans intervention, si vous donnez à "list-style-position" la valeur "inside", la deuxième ligne d'un élément de liste long n'aura pas de retrait, mais retournera au bord gauche de la liste (c'est-à-dire alignera à gauche avec le numéro de l’article). Ceci est propre aux listes ordonnées et ne se produit pas dans les listes non ordonnées.
Si vous donnez plutôt à "list-style-position" la valeur "outside", la deuxième ligne aura le même retrait que la première ligne.
J'ai eu une liste avec une frontière et 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 du cadre.
J'ai résolu ce problème 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 où 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:
<ol class="classname" style="margin:0 0 0 1.5em;">