Ich möchte eine "Insider" -Liste mit Listenaufzählungszeichen oder Dezimalzahlen, die alle mit übergeordneten Textblöcken bündig sind. Zweite Zeilen von Listeneinträgen müssen den gleichen Einzug wie die erste Zeile haben!
Z.B:
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 bietet nur zwei Werte für seine "Listenstilposition" - innen und außen. Mit "innen" sind zweite Zeilen bündig mit den Listenpunkten, nicht mit der übergeordneten Zeile:
3. longer Text, longer Text, longer Text, longer Text, longer Text, longer Text
second line of longer Text
4. Text
Breite "außerhalb" meiner Liste ist nicht mehr bündig mit übergeordneten Textblöcken.
Experimente mit Texteinzug, Auffüllen nach links und Rand nach links funktionieren für ungeordnete Listen, schlagen jedoch für geordnete Listen fehl, da dies von der Anzahl der Zeichen der Listendezimalzahl abhängt:
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." und "12." sind nicht bündig mit dem übergeordneten Textblock im Vergleich zu "3". und "4.".
Wo ist also das Geheimnis über geordnete Listen und den Einzug in der zweiten Zeile? Danke für deinen Einsatz!
quelle
Antworten:
Aktualisieren
Diese Antwort ist veraltet. Sie können dies viel einfacher tun, wie in einer anderen Antwort unten ausgeführt:
Siehe https://www.w3schools.com/cssref/pr_list-style-position.asp
Ursprüngliche Antwort
Ich bin überrascht zu sehen, dass dies noch nicht gelöst wurde. Sie können den Tabellenlayout-Algorithmus des Browsers (ohne Verwendung von Tabellen) wie folgt verwenden:
Demo: http://jsfiddle.net/4rnNK/1/
Verwenden Sie die Legacy-
:before
Notation mit einem Doppelpunkt, damit es in IE8 funktioniert .quelle
foo
ist nur eine zufällige Zeichenfolge (id) wird verwendet , um die zu verbindencounter-reset
,counter-increment
undcounter()
Eigenschaften.position: relative
den<li>
undposition: absolute
den generierten Inhalt verwenden. Ein Beispiel finden Sie unter jsfiddle.net/maryisdead/kgr4k .40px
? Das wird kaputt gehen, wenn die Zähler breiter sind . Der springende Punkt bei der Verwendung des Tabellenlayouts ist, dass der Browser automatisch zum Inhalt passt.Ich glaube, das wird das tun, wonach Sie suchen.
JSFiddle: https://jsfiddle.net/dzbos70f/
quelle
1em
entspricht nicht dem Leerzeichen des Einzugs. Die Linien werden pixelweise nicht perfekt ausgerichtet. Zweitens, was ist, wenn die Liste die Nummer 10 erreicht? 100? Der Texteinzug funktioniert nicht, er wird nicht ausgerichtet. Diese Antwort sollte abgelehnt werden.1em
. oi60.tinypic.com/a0eyvs.jpg Das erste Listenelement verwendet die oben beschriebene Texteinzugstechnik . Verglichen mit dem, wie es normalerweise mit der Position im Listenstil aussieht: Draußen ist es falsch ausgerichtet, in diesem Fall um ein Pixel versetzt.Der einfachste und sauberste Weg, ohne Hacks, besteht darin, das
ul
(oderol
) wie folgt einzurücken :Dies ergibt das gleiche Ergebnis wie die akzeptierte Antwort: https://jsfiddle.net/5wxf2ayu/
Bildschirmfoto:
quelle
list-style-position: outside
zu<li>
.Überprüfen Sie diese Geige:
http://jsfiddle.net/K6bLp/
Es zeigt, wie ul und ol mit CSS manuell eingerückt werden.
HTML
CSS
Auch ich habe deine Geige bearbeitet
http://jsfiddle.net/j7MEd/3/
Notieren Sie es.
quelle
type
Attribut für<ol>
in HTML 5 veraltet zu sein scheint. Verwenden Siestyle="list-style-type: "
stattdessen.Sie können den Rand und den Abstand eines
ol
oderul
in CSS festlegenquelle
Ich glaube, Sie müssen nur die Liste "Kugel" außerhalb der Polsterung setzen.
quelle
Sie können CSS verwenden, um einen Bereich auszuwählen. In diesem Fall möchten Sie die Listenelemente 1-9:
Passen Sie dann die Ränder dieser ersten Elemente entsprechend an:
Sehen Sie es hier in Aktion: http://www.wortfm.org/wort-madison-charts-for-the-week-beginning-11192012/
quelle
Das folgende CSS hat es geschafft:
quelle
Meine Lösung ist die gleiche wie die von Pumbaa80 , aber ich schlage vor,
display: table
anstelle vondisplay:table-row
forli
element zu verwenden. So wird es ungefähr so sein:Jetzt können wir Ränder für den Abstand zwischen
li
's verwendenquelle
Ich mag diese Lösung selbst sehr gern:
quelle
Die alten, ul-Listen funktionieren, wenn Sie möchten. Sie können auch eine Tabelle mit Rahmen verwenden: keine in der CSS.
quelle
CSS bietet nur zwei Werte für seine "Listenstilposition" - innen und außen. Mit "innen" sind zweite Zeilen bündig mit den Listenpunkten, nicht mit der übergeordneten Zeile:
Wenn Sie in geordneten Listen ohne Intervention dem Wert "list-style-position" den Wert "inside" geben, hat die zweite Zeile eines langen Listenelements keinen Einzug, sondern kehrt zum linken Rand der Liste zurück (dh zum linken Rand der Liste) wird linksbündig mit der Nummer des Elements ausgerichtet). Dies ist bei geordneten Listen besonders und tritt bei ungeordneten Listen nicht auf.
Wenn Sie stattdessen "Listenstil-Position" den Wert "außerhalb" geben, hat die zweite Zeile den gleichen Einzug wie die erste Zeile.
Ich hatte eine Liste mit einem Rand und hatte dieses Problem. Mit "list-style-position" auf "inside" sah meine Liste nicht so aus, wie ich es wollte. Wenn jedoch "Listenstil-Position" auf "außerhalb" gesetzt ist, fallen die Nummern der Listenelemente außerhalb des Rahmens.
Ich habe dieses Problem gelöst, indem ich einfach einen breiteren linken Rand für die gesamte Liste festgelegt habe, wodurch die gesamte Liste nach rechts zurück in die Position verschoben wurde, in der sie sich zuvor befand.
CSS:
ol.classname {margin: 0; padding: 0;}
ol.classname li {margin: 0.5em 0 0 0; padding-left: 0; list-style-position: external;}
HTML:
quelle
Ok, ich bin zurückgegangen und habe einige Dinge herausgefunden. Dies ist eine grobe Lösung für das, was ich vorgeschlagen habe, aber es scheint funktional zu sein.
Zuerst habe ich die Zahlen zu einer Reihe ungeordneter Listen gemacht. Eine ungeordnete Liste enthält normalerweise eine CD am Anfang jedes Listenelements (
Dann habe ich die ganze Liste angezeigt: Tabellenzeile. Warum füge ich Ihnen hier nicht einfach den Code ein, anstatt darüber zu plappern?
CSS:
}}
}}
Dies scheint den Text in der 2. Division an den Zahlen in der geordneten Liste in der ersten Division auszurichten. Ich habe sowohl die Liste als auch den Text mit einem Tag umgeben, damit ich allen Divs sagen kann, dass sie als Inline-Blöcke angezeigt werden sollen. Das reihte sie gut ein.
Der Rand dient dazu, ein Leerzeichen zwischen dem Punkt und dem Beginn des Textes zu setzen. Ansonsten laufen sie direkt gegeneinander und es sieht aus wie ein Schandfleck.
Mein Arbeitgeber wollte, dass umlaufender Text (für längere bibliografische Einträge) mit dem Anfang der ersten Zeile und nicht mit dem linken Rand übereinstimmt. Ursprünglich zappelte ich mit einem positiven Rand und einem negativen Texteinzug, aber dann wurde mir klar, dass dies beim Wechsel zu zwei verschiedenen Divs dazu führte, dass der gesamte Text am linken Rand des Div ausgerichtet war war der Rand, an dem der Text natürlich begann. Alles, was ich brauchte, war ein Rand von 0,2 em, um etwas Platz hinzuzufügen, und alles andere war schwimmend ausgerichtet.
Ich hoffe, das hilft, wenn OP ein ähnliches Problem hatte ... Ich hatte Schwierigkeiten, ihn / sie zu verstehen.
quelle
Ich hatte das gleiche Problem und begann, die Antwort von user123444555621 zu verwenden . Ich musste jedoch auch jedem
padding
ein und hinzufügen , was diese Lösung nicht zulässt, da jedes ein istborder
li
li
table-row
.Zuerst verwenden wir a, um das
counter
zu replizierenol
Zahlen der .Wir setzen dann
display: table;
auf jedenli
unddisplay: table-cell
auf den:before
, um uns den Einzug zu geben.Endlich der knifflige Teil. Da wir nicht für das gesamte Tabellenlayout verwenden,
ol
müssen wir sicherstellen, dass jedes:before
die gleiche Breite hat. Wir können diech
Einheit verwenden , um die Breite ungefähr gleich der Anzahl der Zeichen zu halten. Um die Breiten gleichmäßig zu halten, wenn sich die Anzahl der Stellen für die:before
unterscheidet, können wir Mengenabfragen implementieren . Angenommen, Sie wissen, dass Ihre Listen nicht 100 Elemente oder mehr enthalten, benötigen Sie nur eine Mengenabfrageregel:before
, um die Breite zu ändern. Sie können jedoch problemlos weitere hinzufügen.quelle