上付き文字を使用して順序付きリストを作成したいので、htmlで次のようにします。
<ol class="sup_n">
<li><p>Item 1</p></li>
<li><p>Item 2</p></li>
<li><p>Item 3</p><p>Item 3b</p></li>
</ol>
しかし、それを次のように表示する
1)項目 1
2)項目 2
3)項目 3a
項目 3b
ただし、既存のソリューションでは、テキストのみを含むリスト項目に対してのみ機能することが示されています。他のコンテンツ (スパン、div、p タグ、画像、その他のリスト、および名前) がある瞬間、結果は正確ではありません。私のhtmlにはリストの「スタイル」が混在しているため(一部はテキストのみ、一部はさまざまなタグが混在)、liタグ内のあらゆるものを「通常の」タグであるかのように処理できる柔軟性が必要です. 正直なところ、私は本当の CSS ウィザードではありません。
これは私が使用したコードです(上記のページにある構造的なアイデア、上付き文字のスタイルを追加):
ol.sup_n {
counter-reset: item;
margin: 0;
padding: 0;
list-style:none;
}
.sup_n li {
display: block;
margin-left: 1em;
}
.sup_n li:before {
content: counter(item) ")";
counter-increment: item;
display: inline-block;
text-align: right;
width: 3em;
padding-right: 0.5em;
margin-left: -3.5em;
vertical-align:super;
font-size:xx-small;
}
<ol class="sup_n">
<li><p>Item 1</p></li>
<li><p>Item 2</p></li>
<li><p>Item 3</p><p>Item 3b</p></li>
</ol>
ただし、リスト項目にサブ要素がない場合にのみ正常に機能します。li の複数の異なる要素で動作させるにはどうすればよいですか? この例では p タグのみを使用していますが、実際には別のタグにすることもできます。これらをカバーするための最良のアプローチは何でしょうか?