2012-05-13 27 views
1

私はクライアントのためにサイトをリマスタリングしています。 Iveはいくつかのことを読んで、clearfixと呼ばれるメソッドを見つけました。私はそれを読んだので、私はそれを一杯するつもりでした。通常、私はそれmargin:0 auto;を中央うCSSを使用して要素を中央に配置できないようにするにはどうすればいいのですか?

を働いたが、これはもはや作品clearfixを実施していない、私はそれに打撃私は要素を中心に私の方法を見つける午前を与えていることを今

。だから私は同じ論理を適用する手段を探していますが、方程式にはclearfixを入れておきます。私は新しいブラウザで動作するかもしれないものをいくつか見つけましたが、古いもので動作するかどうかはわかりませんし、他のものを行うためにハッキングすることなくできるだけクロスブラウザに準拠させようとしています。私がサイトをリマスタリングしている多くの理由のうちの1つです。参照用

これは、以前にメイン含む要素を述べたように、私はCODEを表示するように編集 http://www.webtoolkit.info/css-clearfix.html

* *

<!DOCTYPE HTML> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>[title here]</title> 
<style type="text/css" media="all"> 
*{margin:0;padding:0;} 
body{background-color:#3F3965;font-family:Verdana, Geneva, sans-serif;color:#000;} 
#content_wrap{margin:0 auto;padding:0;width:800px;background-color:#FFF;} 
#content_left{width:180px;float:left;} 
#content_right{width:620px;float:left;} 
.rounded{ 
    -moz-border-radius: 10px; /* Firefox */ 
    -webkit-border-radius: 10px; /* Safari, Chrome */ 
    border-radius: 10px; /* CSS3 */ 
    behavior: url(border-radius.htc); 
} 
.border{border:solid 2px;} 
.light{border-color:#999;} 
.dark{border-color:#666;} 
.clr{clear:both;} /*standard clear*/ 
/*start clearfix*/ 
.clearfix:after {content: ".";display: block;clear:both;visibility:hidden;line-height:0;height:0;} 
.clearfix {display:inline-block;} 
html[xmlns] .clearfix {display:block;} 
* html .clearfix{height:1%;} 
/*end clearfix*/ 
</style> 
</head> 
<body> 

<div id="content_wrap" class="clearfix rounded border dark"> 
    <div id="content_left">left</div> 
    <div id="content_right">right</div> 
</div> 
</body> 
</html> 

を使用していますclearfixの方法であることは、その "中心" 失いますその場所にclearfixクラスを適用したときの位置です。私が浮動要素を持っている親要素を取ることを理解してからclearfixの全体のポイントは、その中で最大の浮動要素の高さに要素を調整することです。ここで私はそれがマージン:0オート;そうでなければ提供されたクラスを介して同じ要素に渡されます。

+1

あなたはいくつかのコードをポストおよび/またはhttpを作成するために、気になります。 //jsfiddle.netの例? – Javaguru

+0

ソースを表示するように編集されました.. – chris

答えて

2

浮動小数点を持つ要素のコンテナの高さの誤算を解決する1つの方法は、overflow:hiddenを置くことです。計算ミスは、コンテナDIVの高さを計算するときに内部レイアウトが準備できていないために発生します。 overflow:コンテナDIVに隠されていると、すべての子がレンダリングされた後に高さが再計算されます。

<div class="container"> 
    <div class="child"> 
    Lorem ipsum 
    </div> 
    <div class="child"> 
    Lorem ipsum 
    </div> 
    <div class="child"> 
    Lorem ipsum 
    </div> 

.container{ 
    overflow:hidden; 
    } 
.child{ 
    float:left; 
    width:20px; 
    } 

これは、いくつかのバナーやリボンなどの実際の容器の外側に配置されますが、絶対または相対位置いくつかの要素を持っているpalces、問題が発生します。そうでなければ、これはきれいな解決策です。

PPKは、それがhttp://www.quirksmode.org/css/clearing.html

0

[OK]を、病気は自分の質問に答えるには1件の記事があります。ここに誰も見ないことは、質問に特有の何かを提供することができます。

私がやったことは、別のdivをcontent_wrap divの中に置き、この要素からclearfixクラスを削除したことです。この新しいdivにはclearfixのクラスが与えられ、コンテンツdivの残りの部分にラップされるので、意図した通りにclearfixが適用されます。

これは、content_wrap divが私が望んでいた方法を中心にすることを可能にしました。

0

このシナリオでは、クリスの答えを広げて、2つのラッパーが必要です。

外のラッパーは、コンテナの幅を設定し、あなたのmargin: 0 auto;スタイルを適用する必要があります

.content_center { 
    width: 800px; 
    margin: 0 auto; 
} 

その後、我々はあなたのコンテンツラッパーにclearfixクラスやスタイルを適用し、それが100%に幅だ設定することができます( )その親の:

.content_wrap { 
    width: 100%; 
} 

Here's a fiddle.

関連する問題