「Web 標準の日々」初日を終え、まったり中。レポートみたいなのははてなダイアリーの方にとりあえずその場の勢いで書いた。本当はセッション3の「富士通の実践、アクセシビリティ/ユーザビリティ。そしてファインダビリティ」も受講したんですが、資料配布なし、録音を認めていなかったので、エントリはしてません。記事としてはあるんですが、この辺表に出さない方がいいのかと思って。聞いておけばよかった。。
で、自身のエントリにレスを付けるのも変な話ですが、分かりやすいと思ってこうします。
「float プロパティを使用する場合はその要素の幅の明示が必要」に対するコメントをいくつかいただいてますが、それにちょっち返答と言うか、自分の考え方を残しておきます。
- 2007年07月13日 kits CSS 2.1 だと仕様が少し変わっています。 http://hp.vector.co.jp/authors/VA022006/css/css21_visudet.html#float-non-replaced-width
- 2007年07月15日 NiPeke 2.1 なら shrink-to-fit するぜ? 2.1 には日本語で言う『明示的な幅〜』というのも無いような
- 最近のモダンブラウザは概ねCSS 2.1の仕様に沿ってレンダリングされるから、最新ブラウザのみが対象であ れば必要ないかもしれないと思う今日この頃。e_luck
- 2.1 なら shrink-to-fit するぜ? 2.1 では日本語で言う『明示的な幅〜』という部分も変更されていますね Kaminogoya
確かに CSS 2.1 では幅の明示は必要ないです。そして CSS 2.1 が草案(まだ最終草案の段階ですよね?)であるにもかかわらず、すでにブラウザ側が実装しているのも知っています。
でもこれは個人的な思いなんですが、現段階で「内容に合せて縮めた幅を算出する」と言う仕様があったとしても、実際に勧告してみないと分からないじゃないですか。ワーキンググループメンバーの主義主張でひっくり返る可能性だって無いわけではないですし。と言うかそっちの方は全然詳しくないし参加もしてないですし分かりませんが、未だ CSS 2.1 が10年くらいずっと今の状態であるわけなので、何が起こってもおかしくないと言うか。
と言うのが率直な感想で、いくら実装面で CSS 2.1 がほぼ準拠されているとは言え、限りなく公式に近いデファクトスタンダードだと思います。
それが良い悪いの話じゃなく、現段階の仕様には可能な限り準拠した方が将来に対するリスクは少ないんじゃないかな、と感じるんです。もっとも、この話は実装面にも依存するので、何とも言えませんが。この辺はあっちのブログで書いたように、会社的な考えにもなるんですが。
もちろん必ずしも仕様準拠ありきとまでは言いませんが、でもそれを踏まえた上で(今ならば)選択する余地はあると思うんです。幅を明示するかしないかとか。
でも思えば (X)HTML 文書は HTML なのか XHTML なのか、HTML なら 4.01 なのか 5 なのか、XHTML なら 1.0 なのか 1.1 なのかって選択できますけど、CSS は選択できないんですよね(HTML 5 はまだ選択肢として無いけど、例みたいな感じで)。まあこれは別に問題があるわけじゃないからいいのかな。パッと思いつくほど CSS のバージョン宣言しなければならない仕様差異があるわけじゃないし。CSS 3 だとまた話は違ってくるだろうけど。

CSS2.1が7月19日付けで勧告候補(CR)になってました。
非置換フロートの扱いに変更がないので、このまま進めば正式勧告される可能性大です。
Mac OS 10.4.10 の環境での確認ですが、Mac IE 5.2.3 でも float したオブジェクトに明示的な幅の指定が無い場合でも、コンテンツに合わせて調整してくれるようです。
サンプルページ
http://2xup.org/course/csslayout/sample/sample-shrinktofit.html
スクリーンショット
http://www.flickr.com/photos/kaminogoya/855222363/
>と言うことは変な話、ブラウザがサポートしているのは CSS 2 でも 2.1 でもないってことですか?
CSS2.1仕様でも余り明確にせず慣例から大雑把に定めているだけなので、
多くの既存ブラウザではそのやうに都合よくレンダリングして呉れます。
>CSS 2 を基準にブラウザ側が現実的な表現に適した形で表示を行うことになるわけですかね?
そうです。幅がゼロになるなんて明らからにイレギュラーな仕様ですから。
ただしMacIE5のように横一杯に拡がるものもあるので、困るのですが。
>ΑΝΩΝΥΜΟΣ さん
> 既存の実装慣行に倣って、
> CSS2仕樣の不備を現実的な仕様に改め、相互運用性を図ったのですよ。
と言うことは変な話、ブラウザがサポートしているのは CSS 2 でも 2.1 でもないってことですか?
CSS 2 を基準にブラウザ側が現実的な表現に適した形で表示を行うことになるわけですかね?
> CSS3ならまだしもCSS2.1は現実主義なので、そう神経質に考える必要はありません。
だと自分も思っています。この辺は考え方の問題でしょうか。先に述べたように、極端な仕様優先か実装優先かの話だと思います。
私は状況に応じてどちらかを選択してますが、むしろ今の環境であるからこそできる選択だと思っています。
こんなことを考えなくて済むようにしたいものですが。。
>kaminogoya さん
こちらこそ先日はお忙しいところありがとうございます。
「必要」と言う言葉の捉え方だと思いますが、おっしゃるように私の記事で多少なりとも誤解を与えてしまう可能性があると思います。
これについては追って解釈を改めます。ご指摘、またご意見ありがとうございます。
私も今回の件で勉強になりました。ありがとうございます。
先日はありがとうございました!
お会いして実際にお話できて本当に嬉しかったです。
そこでも述べたのですが、僕がブックマークのコメントで指摘したのはタイトルの『〜必要』という部分ですね。
必要。ってことは必ず要るってことですから。
僕が先日何度も『試しましょう・意識しましょう』と言ったのは、自分もそうしないで書いてある内容をそのまま飲み込んでしまっていたからなんです。
同じように yu-suke さんの記事を読んで『必ず幅をしていしなければいけないのか』と飲み込んでしまう人がいないとも限りません。
なので、今ダウンロードできるほとんどのブラウザが、2.1 の仕様書に記載されている内容に沿った実装を行っていて、その 2.1 の仕様書では明示的な幅の指定が必要とはなっていない。リスク等を考えて幅を指定する事はあっても、それは『必要』ということではないですよね。
という背景から指摘をさせていただきました。
ちなみに僕も float する要素には幅を指定しないことはほぼありません。それは yu-suke さんがこのブログ記事で書いていらっしゃるような『リスク』を考えているからです。
yu-suke さんがブログ記事を書かなければ、僕も復習する機会は無かったと思います。
また、ブックマーク上で行うコメントに対しても意識を改める良いきっかけになりました。
本当にありがとうございます。
>CSS 2.1 が草案(まだ最終草案の段階ですよね?)であるにもかかわらず、すでにブラウザ側が実装しているのも知っています。
ブラウザ側の先行実装というより、むしろ既存の実装慣行に倣って、
CSS2仕樣の不備を現実的な仕様に改め、相互運用性を図ったのですよ。
>実際に勧告してみないと分からないじゃないですか。ワーキンググループメンバーの主義主張でひっくり返る可能性だって無いわけではないですし。
CSS2.1仕様では相互運用性を重要課題として、実装の慣例を重視する傾向にあります。
随って、今後の精査により多少変更されるにしても、概ねの方針は維持される筈です。
CSS3ならまだしもCSS2.1は現実主義なので、そう神経質に考える必要はありません。
もちろん、非置換フロートの幅を明確にして置いたほうが、無難なのは明白ですが。