Amazon倉庫転売厨終了事件はその後どうなったのか - 空気を読まない中杜カズサを読んで。いや、正確にははてなブックマーク - Amazon倉庫転売厨終了事件はその後どうなったのか - 空気を読まない中杜カズサを読んで。
本文が読めない…。→ http://f.hatena.ne.jp/EXAPON/20080707184344 IE6.0、解像度 1024 × 768。
はてなブックマーク - EXAPONのブックマーク / 2008年07月07日
これは何が原因かというと、IE6の非常に有名なバグです。
IE6の「overflow:visible」バグ
ボックスサイズが内容物に合わせた大きさへ強制的に調整される(IE6)
overflow: visible; が指定されているとき(初期値)、ボックスをはみ出す内容物はボックス外に表示されると規定されているが、IEでは内容物に合わせてボックスが拡大される。
Internet Explorer (Windows) CSSバグリスト
要するに何らかの原因で、サイドバーに入れているAmazonアソシエイトへのリンクの幅が大きくなってしまって、それによって外枠のサイドバーが拡大、結果として本文まで隠れてしまっているのです。floatを使ったテンプレートならこういう現象が起こった場合、カラム落ちが起こります。しかし、その使用中のテンプレートはサイドバーを「position: absolute」で固定している(*1)ため、要素が被って見えなくなってしまうのですね。
([*1]私もはてなダイアリーで同じテンプレートを使っているのでわかる。)
CSSをちょっといじってみて(*2)意図的に同じ現象を起こしてみたのが以下の画像です。同じ状態になっていることがわかると思います。
([*2]内部のdivに親要素以上の横幅を指定して、擬似的に再現した。)
それで具体的にどうすれば解決するかというと、以下のコードをはてなダイアリーの管理画面の「スタイルシート」に書き込んで保存すれば直ると思います。
.sidebar {
overflow:hidden;
}
先ほどの意図的に問題を起こしたCSSに上記のコードを書き込むとこうなりました。ちゃんと本文が読めるようになっています。

この3行で直る理由は以下のとおり。
- 「sidebar」はサイドバー全体を囲っているdivに付いているクラス名
- 「sidebar」には「width: 220px;」と横幅が指定してある
- 「overflow:hidden;」でサイズを超えた部分を表示しないように指定
- 内側の内容物が勝手に拡大しても220pxを超えた部分は表示されなくなるので問題解決
ちなみにこれ、IE6のみのバグかと個人的に思っていたんですが、試してみたらIE7でも同じ現象が起こりました。
ただIE関係のバグなので、当然FirefoxやOperaでは問題は起こりません。
前に試したテストではバグが修正されているようだったので、IE7では後方互換モードの場合のみ(*3)起こるのかもしれませんが、詳しく調べていないのでよくわかりません。ただ、FirefoxやOperaを使っている場合は気がつかないトラブルでしょう。
([*3]はてなダイアリーはDOCTYPEの関係で必ず後方互換モードになる。)
まとめ
- IE6は内容物によって、サイズが決められている外側のボックスまで広げてしまうバグが存在する
- それによってレイアウトが壊れたり、文章が読めなくなったりする
- 解決方法はそのサイズが決められている要素に「overflow:hidden;」を設定する
ちなみに、サイズがあらかじめ決められてない要素に「overflow:hidden;」を設定しても意味はありません。なぜなら、その状態だと内容物のサイズによって、そのボックスの大きさ自体が変化していくのが正常な挙動(*4)だからです。また、「overflow:hidden;」によって改行されない中身が読めなくなったりすることもあるので、特に問題がなければ使用しない方がいいと思います。
([*4]親要素があったりする場合はまた別。)
この記事へのコメント
コメント機能を利用するにはログインする必要があります。「Disqus」または「Twitter」「Google」「Facebook」などのアカウントが使用できます。
どうも問題が起こっていたブログ主です。
非常に助かりました。ありがとうございます。
ちなみにSleipnirでは、一度ふくらんで元にもどるので、その課程での読み込み中断が原因とにらんでたのですが、IEのバグだったとは……
しかし、こういう再現がまちまちなバグが一番困りますね。
いえいえ、どうも。どちらかというとこれは私が「これはネタになる!」と考えて書いた側面が大きいエントリですので。実はこのBlogもIE6で見るとこの不具合の影響が出ているところがありまして、何もなくてもいずれエントリに起こそうと思っていたんです。
> ちなみにSleipnirでは、一度ふくらんで元にもどるので、その課程での読み込み中断が原因とにらんでたのですが、IEのバグだったとは……
SleipnirもIEエンジンですから、基本的には同じ不具合が発生します。ただ、Amazonからの画像取得の挙動に違いがあって、内容物が膨らんだり戻ったりする「何か」があるのかもしれません。ただ、内容物が広がってしまった根本的な原因はよくわかりませんね。