Ellinikonblue.net Devlosxom

ここはまだ壮大な夢の途中…

フレーバ改装工事日報 #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)

フレーバ改装工事日報 #1: YUI Reset CSS 適用後のスタイル再設定

[ フレーバー » CSS ]

 先般から始めております フレーバー の全面改装工事ですが、表向きには何とか改装前と変わらないレベルにはなりました。
 ここまでで、エラスティックレイアウトの採用、 The Yahoo! User Interface Library (以下、 YUI )から Reset CSS/Font CSS の導入までは終わっています。

 エラスティックレイアウトとは、ちょっと調べてもらったらわかりますが、 Yahoo! JAPAN のトップページでも採用される ユーザがブラウザで文字の大きさを変更しても崩れない 「伸び縮みするレイアウト」のことです。
 実際このページの文字サイズを大きくしてもらうとわかりますが、 どんなに大きくしても基本的なレイアウトは崩れません(のはずです f^^; )。
 昨今、ブラウザ側に画像を含めてまるごと拡大縮小する機能が実装されるに至って、 今後どれほど意味があるかはわかりませんが、 興味を持ったので取り入れてみました。
 原理は簡単です。基本、幅などの指定を em 単位で行っただけのことです(今のところは…)。 今後グラフィカルな要素を入れ込むとまた一思案しなければならなくなりますが、 それはまたいずれ…と言うことで。

 次に YUI Reset CSS/Font CSS ですが、 一時、話題になったのでご存じの方は多いと思います。 様々なブラウザがデフォルトで持っている設定を、最小の手数でリセットする (要はどんなタグを指定しても装飾されず、またどのブラウザでも同じに見える状態にする) CSS です。
 しかし、知っているのと使ってみるのとでは大違い。
 初期設定を無効にすると言うことは、すべて自分で定義し直すと言うことです。 これが言うが易く行うは難し。
 Google さんに聞いてみても、 「こんな CSS があるよ」はそれこそ星の数ほど引っかかるのですが、 ではこの CSS を使って再定義はこうすると言う情報はほとんど皆無 (私の能力では探しきれなかった可能性も大 orz )。

 まずやっかいだったのは li 要素のスタイル再定義。
 YUI Reset CSS をかますと、 行頭文字が何も表示されなくなるので、これを再定義しなければなりません。 ということで、単純に
li { list-style: disc none outside; }
とかしてしまうと、ul ブロックであろうが ol ブロックであろうが、 disc になってしまい、かといって
ul { list-style: disc none outside; }
とかしてもそもそも Reset CSS で li 要素で none と指定されているので、 効力を発揮しません。
 正解はこれ…
li { list-style: inherit; }
ul { list-style: disc none outside; }
ol { list-style: decimal none outside; }
だと思うでしょう? f^O^;

 確かに Firefox であれば これで(万事ではないんですが)おっけーなんですが、 IE では これではだめなんです。
 真の正解は…(つづく m(_ _)m )

Jul 15, 2008 at 00:22 | コメント (0) | トラックバック (0)

Page 1 of 1: 1

Local Search

Google

WWW を検索
Ellinikonblue.net を検索

Archives

Categories

Syndicate

Specification

フィードメーター - Ellinikonblue.net Devlosxom

Links

Powered by

powered by blosxom. Powered by FeedBurner
© 2004-2008 Ellinikonblue.com All Rights Reserved.