フレーバ改装工事日報 #2: li 要素の再定義

[ フレーバー » CSS ]

 すでにこれだけ日が開くと、日報もないような気もしますが…

 YUI Reset CSS を使用したのち、各要素を再定義していく中で、 手こずったのは li 要素の再定義で、
li { list-style: inherit; }
ul { list-style: disc none outside; }
ol { list-style: decimal none outside; }
とすると、少なくとも Firefox では ul, ol ブロックで指示した文字・記号が行頭にでるようになりますが、 Internet Explorer では うまく行きません。
 IE では、
li { list-style: inherit; }
ul li { list-style: disc none outside; }
ol li { list-style: decimal none outside; }
と明示的に ul, ol ブロック中の li 要素に対して 明示的に再定義する必要があります。 しかし、逆にこのようにだけ指定すると、 今度は Firefox で うまくいかなくなります。

 さらにもう一つ問題があって、 ul ブロック中の中の ol ブロック、またその逆、 加えて ul, ol ブロック中の二階層目の ul, ol ブロック中での li 要素の行頭文字を一階層目と違うものにしたい場合の 定義も別途必要になります。

 と言うことで、真の正解はこれ。
li { list-style: inherit; }
ul, ul li { list-style: disc none outside; }
ol, ol li { list-style: decimal none outside; }
ul ul, ul ul li { list-style: circle none outside; }
ol ol, ol ol li { list-style: lower-alpha none outside; }
ul ol, ul ol li { list-style: decimal none outside; }
ol ul, ol ul li { list-style: disc none outside; }
 三階層目はやめましょう (^^;>

 自分でもあまり美しい方法ではないように思うんですが、 これ以外の解を見つけられませんでした。
 より美しい解をご存じの方、是非教えてください m(_ _)m

Aug 10, 2008 at 23:40 | コメント (0) | トラックバック (0)

トラックバック


このエントリへのトラックバック一覧

 まだこのエントリに対するトラックバックはありません。

このエントリへのコメント一覧

 まだこのエントリに対するコメントはありません。

コメントを書く





※ URL の場合は http://... から、 メールアドレスの場合は mailto:... から記述してください。