リストの箇条書きまたは小数点がすべて上位のテキスト ブロックと揃う「内部」リストを作成したいと考えています。リスト エントリの 2 行目は、最初の行と同じインデントにする必要があります。
例えば:
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 は、"list-style-position" に inside と outside の 2 つの値のみを提供します。"inside" の場合、2 番目の行は上位の行ではなくリスト ポイントと同じ高さになります。
3. longer Text, longer Text, longer Text, longer Text, longer Text, longer Text
second line of longer Text
4. Text
リストの「外側」の幅が、上位のテキスト ブロックと揃わなくなりました。
実験 width text-indent、padding-left、margin-left は順序なしリストでは機能しますが、リストの小数点の文字数に依存するため、順序ありリストでは機能しません。
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.」と「12.」は、「3.」と「4.」と比べて上位のテキスト ブロックと面一になっていません。
では、順序付きリストと 2 行目のインデントの秘密はどこにあるのでしょうか? ご尽力に感謝いたします。
ベストアンサー1
アップデート
この回答は古くなっています。以下の別の回答で指摘されているように、これをもっと簡単に行うことができます。
ul {
list-style-position: outside;
}
見る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;
}
デモ:http://jsfiddle.net/4rnNK/1/
IE8 で動作させるには、:before
コロンを 1 つ付けた従来の表記法を使用します。