まとめ ブログ ダウンロード 掲示板 メール

れぶろぐ

< 2007-10-03 (水) 2007-10-06 (土) > 最新


2007-10-05 (金)

IE5 以上 (含む Macintosh 版) で min-width を実現する CSS ハック

IE6 以下で min-width を実現する CSS ハックがよく紹介されていますが、 その多くは後方互換モード (Quirks Mode) 用で、 標準準拠モード (Standards Mode) では機能しません。 標準準拠モードで使える方法が欲しかったので、探し出してきました。

ここにいくつかの例が載っていますが、 そのうちの4番、5番は、次のような特徴を持つかなり万能な方法です。

  • 標準準拠モードにも対応
  • IE 5.0 や Macintosh 版 Internet Explorer にも対応
  • float は使わずに実現

下手にここで解説するよりも、上のリンク先を実際に見て欲しいのですが、 基本的な部分だけ書き出しておくと、こんな HTML と CSS で実現されています。

<div class="width">
<div class="minwidth">
<div class="container">

</div>
</div>
</div>
.width {
	min-width: 300px;
	background: #fff;
}
* html .minwidth {
	border-left: 300px solid #fff;
}
* html .container {
	margin-left: -300px;
	position: relative;
}
/*\*/
* html .minwidth,
* html .container,
* html .content {
	height: 1px;
}
/*/
.width {
	display: inline-block;
}
/**/

つまり、

  • 背景色と同じ色のボーダーで幅を確保
  • ネガティブマージンを使ってその上に載せる
  • Windows 版 IE では hasLayout = true にセット

という仕組みですね。 <div> タグを2重、3重に使わなければならないのが嫌ですが、 JavaScript を無効にしていても使える方法なので、 覚えておいて損はないと思います。

このエントリの続き: 2007-10-11 (木)
Tags: CSS | このエントリを含む del.icio.us | このエントリを含むはてなブックマーク | このエントリを含む livedoor クリップ | Permalink
本日のリンク元

編集