[解決済み] クリアフィクス」はどのような方法で使用できますか?
質問
という昔からの悩みがあります。
div
を2カラムレイアウトで包んでいます。私のサイドバーはフローティングされているので、私のコンテナである
div
は、コンテンツとサイドバーを包むことに失敗しました。
<div id="container">
<div id="content"></div>
<div id="sidebar"></div>
</div>
Firefoxのクリアバグを修正する方法は多数あるようです。
-
<br clear="all"/>
-
overflow:auto
-
overflow:hidden
私の状況では、唯一正しく動作しているように見えるのは
<br clear="all"/>
のソリューションは、ちょっとクドイです。
overflow:auto
は厄介なスクロールバーを発生させるし
overflow:hidden
きっと副作用があるに違いない。
また、IE7はその間違った動作のため、この問題に悩まされることはないはずですが、私の状況ではFirefoxと同じように苦しんでいます。
現在利用可能などの方法が最も堅牢なのでしょうか?
どのように解決するのか?
制作するデザインに応じて、以下のclearfix CSSソリューションにはそれぞれ利点があります。
クリアフィックスには便利な用途がありますが、ハック的な使われ方もされています。clearfixを使う前に、これらのモダンなCSSソリューションが役に立つかもしれません。
モダン・クリアフィックス ソリューション
コンテナ
overflow: auto;
フローティング要素をクリアする最も簡単な方法は、スタイル
overflow: auto
を含む要素に追加します。この解決策は、すべてのモダンブラウザで機能します。
<div style="overflow: auto;">
<img
style="float: right;"
src="path/to/floated-element.png"
width="500"
height="500"
>
<p>Your content here…</p>
</div>
ただし、外部要素でmarginとpaddingの組み合わせを使用すると、スクロールバーが表示されることがありますが、これは別の親要素にmarginとpaddingを配置することで解決できます。
overflow: hidden' を使用することも明確な解決策ですが、スクロールバーが表示されません。
hidden
は、包含する要素の外側に配置されたコンテンツを切り取ります。
注
フローティング要素は
img
タグを使用していますが、どのようなhtml要素でもかまいません。
クリアフィクス・リローデッド
Thierry Koblentz on CSSMojo さんが書き込みました。
最新のクリアフィクスをリロード
. oldIEのサポートをやめることで、解決策を1つのcss文に簡略化できることを指摘しています。さらに
display: block
(代わりに
display: table
によって、clearfix を持つ要素が兄弟である場合に、余白が適切に折りたたまれるようになります。
.container::after {
content: "";
display: block;
clear: both;
}
クリアフィックスの最新版です。
⋮
⋮
旧クリアフィクス・ソリューション
以下の解決策は、モダンブラウザでは必要ありませんが、古いブラウザをターゲットにする場合に有効な場合があります。
これらの解決策は、ブラウザのバグに依存しているため、上記の解決策がどれもうまくいかない場合にのみ使用することに注意してください。
おおまかに年代順に並べています。
モダンブラウザ用クリアフィックス「Beat That ClearFix"」。
のThierry Koblentz氏。
CSSモジョ
は、モダンブラウザをターゲットにする場合、現在では
zoom
と
::before
プロパティ/値を使用するだけです。
.container::after {
content: "";
display: table;
clear: both;
}
このソリューションは、IE 6/7をサポートしていません。
Thierryは以下も提供しています: " 注意事項 なぜなら、oldIEをサポートしていなくても、既存のルールでは余白の折りたたみができないからです。
マイクロクリアフィックス
最も新しく、世界的に採用されているクリアフィクスソリューションである マイクロクリアフィックス by ニコラス・ギャラガー .
既知のサポート。Firefox 3.5+、Safari 4+、Chrome、Opera 9+、IE 6+。
.container::before, .container::after {
content: "";
display: table;
}
.container::after {
clear: both;
}
.container {
zoom: 1;
}
オーバーフロープロパティ
この基本的な方法は、位置決めされたコンテンツがコンテナの枠外に表示されないような、通常のケースに適している。
http://www.quirksmode.org/css/clearing.html
-
は、この技術に関連する一般的な問題、すなわち
width: 100%
をコンテナ上に配置します。
.container {
overflow: hidden;
display: inline-block;
display: block;
}
を使うよりも、むしろ
display
プロパティを使って IE 用に設定することができます。
ある要素に対して "hasLayout" をトリガーする。
.
.container {
overflow: hidden;
zoom: 1;
display: block;
}
を使用してフロートをクリアする別の方法
overflow
プロパティを使用することです。
アンダースコアハック
. IEはアンダースコアの付いた値を適用しますが、他のブラウザは適用しません。そのため
zoom
プロパティがトリガーとなる
ハッシュレイアウト
をIEで表示します。
.container {
overflow: hidden;
_overflow: visible; /* for IE */
_zoom: 1; /* for IE */
}
これは機能しますが...ハックを使用するのは理想的ではありません。
PIE:簡単クリアー法
この古いメソッドは、位置決めされた要素をコンテナの境界外にぶら下げることができるという利点がありますが、よりトリッキーなCSSを犠牲にすることになります。
この解決策はかなり古いものですが、「Position Is Everything」でEasy Clearingについて学ぶことができます。 http://www.positioniseverything.net/easyclearing.html
clear"プロパティを使用している要素
素早く何かを作り上げたいときのための、手軽で汚い解決策(いくつかの欠点もある)。
<br style="clear: both" /> <!-- So dirty! -->
欠点
- レスポンシブ対応ではないため、メディアクエリによってレイアウトスタイルが変化する場合、期待する効果が得られない可能性があります。純粋なCSSによるソリューションがより理想的です。
- 必ずしもセマンティックな価値を付加することなく、htmlマークアップを追加します。
- クリアフィックスという1つの解決策をCSSでクラス参照し、それをHTMLでクラス参照するのではなく、各インスタンスのインライン定義と解決策が必要である。
- この問題を回避するためにさらにハックを書かなければならないかもしれないので、他の人にとってコードが作業しづらくなります。
-
将来、別の clearfix ソリューションを使用する必要がある/使用したい場合、すべての
<br style="clear: both" />
タグがマークアップに散らばっています。
関連
-
[CSSチュートリアル】CSS たった1行のコードでアバターと国旗の一体化を実現
-
[CSSチュートリアル]z-indexの違い。cssのz-index: 0とz-index: autoの違い。
-
[CSSチュートリアル】CSSで2カラムレイアウトを実現するN種類のメソッド
-
[CSSチュートリアル】検索ボックスの非表示機能を実現するCSS(アニメーションの順送り・逆戻りシーケンス)
-
[css3]ピュアCSS3でdivのinとoutの効果を順番に実現する
-
[CSSチュートリアル】擬似要素で実現する中空三角矢印とXアイコンの例
-
[解決済み] visibility:hiddenとdisplay:noneの違いは何ですか?
-
[解決済み] クラスを条件付きで適用する場合の最適な方法は何ですか?
-
[解決済み] クリアフィックスとは何ですか?
-
[解決済み】CSSを使用して、すべてのブラウザでdiv要素を垂直方向に中央に配置するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[css3]css3におけるtransformプロパティの4つの機能
-
[CSSチュートリアル】QQtabBarからCSS命名規則BEMの詳細を見る
-
[CSSチュートリアル】CSSのクラスとidの共通命名規則
-
[CSSチュートリアル】クールなネオン効果を実現するピュアCSS(デモあり)
-
[css3]CSS3のダイヤモンドパズルは、divの背景画像を回転させない機能だけを実現するために
-
[CSSチュートリアル】ボックス内の複数要素を両端揃えの効果で実現するCSS
-
[CSSレイアウト例】CSSで中央揃えを実現する方法N種
-
[CSSチュートリアル】ピュアCSSで作るスクロールシャドウ効果
-
[css3]CSS3アニメーションによる光のボタンの流れの効果
-
[CSSチュートリアル】SVGを使ったCSSアニメーションでエネルギーフローを表現する