「position: static;」化への長い道のり 2004-7-4 

 「div.day{width: 100%}」としたときの100%の解釈ですが、現象は分かりました。


 IE6、Opera7.51では、すぐ上の要素(ダイアリならdiv.main、ダイアリの設定ならdiv.hatena-body)に対する100%と解釈されます。
 さらに、自分自身に指定されたマージンやボーダー分、コンテンツ領域の幅を短くします。


 Moz1.7、FireBox0.9.1では、すぐ上の要素に対する100%と解釈されるところまでは同じなのですが、自分自身に指定されたマージンやボーダー分 コンテンツ領域の幅を縮めることなく、元の長さの100%を踏襲します。
 -moz-box-sizingプロパティを指定しても、親要素の幅の算出方法が変わるだけで、子要素(div.day)の幅(マージン分の減少とか)の計算に影響しないところがイタイです。*1


 cssの仕様を確認する必要がありますが、直感的にはMoz系ブラウザのバグではないでしょうか。たぶん、Bugzilla行き(^^;



 ・・・対策ですが、根本的なものは、まだ見つかりません。
 box-sizingはダメ、marginとpaddingを!important指定してもダメ。
 さて、どうしたものでしょうか・・・。

これまでの進捗 2004-7-5 

 ttp://d.hatena.ne.jp/sasada/20040704#1088971770参照。


 一服中186さんのttp://d.hatena.ne.jp/smoking186/20040704#1088950842より。(同じ内容で2回リファ飛ばすのも何なので)

.hatena-body {
 position:relative;
 width:auto;
 _width:100%;
}


は使えます。これ、採用では?
 ただし、根本解決のためには、「position:relative;」を指定した全ての要素に同様の指定が必要かもしれません。


 私の案である

h2 , div.body , img.photo , div.refererlist , div.comment {
     position: static;
}

div.day {
  width: auto ;
  _width: 100% ;
}


もダイアリーやキーワードでは使えます。試してみれば分かりますが、position:staticに変更する分、表示・スクロールも速くなります。


 ただし、グループトップページ(初期設定)の表示が乱れます。(IEのみ)
 これは、キーワード・リストモジュール(diary形式)のdiv.dayの親要素がtdタグになっている場合、IEでの領域計算に問題があるためかと思います。(違うかも?)


 キーワード・リストモジュール(<:hatena name="keyword" template="diary">)のタグ付けを変えるか、グループトップページ用に「td.main div.day {}」の設定をhatenaテーマに加えれば、回避可能かと思います。(具体的にどうすればよいのかは、まだ考えてませんけど・・・)
 が、汎用性にかけるかもしれません。要検討です。



追記: (2004-7-5 11:18くらい)
 上記、一応解決しました。

td.main div.day {
  _width: auto;
}


を追加することにより、表示の乱れは止まりました。