2017-01-13 19 views
4

リスト項目には段落や画像などが含まれている場合があります。リスト項目番号を周囲の段落に合わせる

Desired result

#page { 
 
    width: 200px; 
 
} 
 

 
li { 
 
    margin: 1em 0; 
 
} 
 
ol { 
 
    padding: 0; 
 
}
<div id="page"> 
 
    <p>Some text</p> 
 
    <ol> 
 
    <li>A list item</li> 
 
    <li>A multiline list item another line</li> 
 
    <li> 
 
     <p>A list item containing blocks such as example images:</p> 
 
     <div style="width:128px;height:48px;background:#CCC">Example<br/>Image</div> 
 
    </li> 
 
    </ol> 
 
    <p>Some more text</p> 
 
</div>

は、理想的には私は、リストタグを保つのではなく、テーブルや配置の一般的なブロックの他のセットを使用することを好むだろう。

答えて

1

あなただけol要素にいくつかの左パディングを追加することができます。

#page { 
 
    width: 200px; 
 
} 
 
ol { 
 
    padding: 0 0 0 1em; 
 
} 
 
ol li { 
 
    margin: 1em 0; 
 
}
<div id="page"> 
 
    <p>Some text</p> 
 
    <ol> 
 
    <li>A list item</li> 
 
    <li>A multiline list item another line</li> 
 
    </ol> 
 
    <p>Some more text</p> 
 
</div>

また、CSSカウンタを使用すると擬似要素を介してリスト番号を追加することができます。

#page { 
 
    width: 200px; 
 
} 
 
ol { 
 
    list-style: none; 
 
    padding: 0; 
 
} 
 
ol li { 
 
    margin: 1em 0; 
 
    counter-increment: number; 
 
    display: flex; 
 
} 
 
ol li:before { 
 
    content: counter(number)"."; 
 
    margin-right: 5px; 
 
}
<div id="page"> 
 
    <p>Some text</p> 
 
    <ol> 
 
    <li>A list item</li> 
 
    <li>A multiline list item another line</li> 
 
    </ol> 
 
    <p>Some more text</p> 
 
</div>

+0

'em'単位を水平に、ピクセルには奇妙な値が必要です。 '1em'は他のフォント/サイズ/ etcに合わせてください。またはこれはちょうど運がいいですか? –

+0

@FireLancerこれはうまく動作します。リスト番号> = 10のときにどのように見たいか分かります。擬似要素を使用してもう1つのアプローチを追加したので、幅やパディングを宣言する必要はありません。 – Stickers

+0

'1em'がほぼ正しいと思われる理由はまだ完全にはわかりませんが、数字の異なるフォントでも同じように見えます(' 1'はおそらく単一のピクセルですが、目立たないものです)。疑似要素は間違いなく興味深いアプローチです。もしmargin-rightの代わりに 'width'を使うと、異なる長さの点(例えば' 9'と '10')で動作します。 –

4

チェックアウトlist-style-positionproperty

#page { 
 
    width: 200px; 
 
} 
 
li { 
 
    margin: 1em 0; 
 
    /* this is what you want ↓ */ 
 
    list-style-position: inside; 
 
} 
 
ol { 
 
    padding: 0; 
 
}
<div id="page"> 
 
    <p>Some text</p> 
 
    <ol> 
 
    <li>A list item</li> 
 
    <li>A multiline list item another line</li> 
 
    </ol> 
 
    <p>Some more text</p> 
 
</div>

+1

Iくぼみが、私はそれにブロックを置いたときにも、それが壊れ、番号の下にテキストを折り返すしたい(li'が有意であった 'でブロックを持っ実現していない、更新します) –

+0

これも見てくださいhttp://stackoverflow.com/questions/10428720/how-to-keep-indent-for-secondline-in-ordered-lists-via-css –

関連する問題