2016-05-31 4 views
1

column2column3の間の水平スペースがでないのはなぜですか10% = 5% + 5%ですか?Horizo​​nal Margins and Blockフォーマットコンテキスト

column1column2の間の水平マージンは、予期したとおりです10%です。

column3はBFCです。これがなぜcolumn2column3のマギンが崩壊するのか?

私はレイアウトをしようとしていません。私はちょうど、それがどうして起こったのか不思議です。

float:noneプロパティのために、左余白column 3がなくなっています。どうして?

.column { 
 
    width: 20%; 
 
    background-color: green; 
 
    float: left; 
 
    margin: 0 5%; 
 
    text-align:center; 
 
} 
 

 
/* Establishing a new block formatting 
 
    context in the last column */ 
 
.bfc { 
 
    float: none; 
 
    overflow: hidden; 
 
    margin-left:20%; /*This property added later.Where does this margin go?*/ 
 
}
<div class="container"> 
 
    <div class="column">column 1</div> 
 
    <div class="column">column 2</div> 
 
    <div class="column bfc">column 3</div> 
 
</div>

答えて

0

.column { 
 
    width: 20%; 
 
    background-color: green; 
 
    display:inline-block; 
 
    margin: 0 5%; 
 
    text-align:center; 
 
} 
 

 
/* Establishing a new block formatting 
 
    context in the last column */ 
 
.bfc { 
 
    
 
    overflow: hidden; 
 
}
<div class="container"> 
 
    <div class="column">column 1</div> 
 
    <div class="column">column 2</div> 
 
    <div class="column bfc">column 3</div> 
 
</div>

あなたは "表示:インラインブロック" を使用しなければならない代わりに、フロートはそれが正常に動作しますleft.Then。問題はbfcのfloat:noneプロパティでした。前の要素の最後から左マージンをとります。問題は、例えば、それをコメントアウトし、それを解決するために、クラス.bfcfloat: none;によって引き起こされる

+0

'前の要素の最後から左の余白を取るでしょうか? 'これについて詳しく説明できますか? –

1

.bfc { 
    /*float: none;*/ 
} 

あなたはmarginで視覚的な違いを持っ​​ている理由はフローティング要素が一部残っているということですウェブページのフローで、noneを使用してfloatプロパティを削除すると(最後の列の場合と同じように)、代わりにstaticが表示されます。

.column { 
 
     width: 20%; 
 
     background-color: green; 
 
     float: left; 
 
     margin: 0 5%; 
 
     text-align:center; 
 
    } 
 

 
    /* Establishing a new block formatting 
 
     context in the last column */ 
 
    .bfc { 
 
     /*float: none;*/ 
 
     overflow: hidden; 
 
    }
<div class="container"> 
 
     <div class="column">column 1</div> 
 
     <div class="column">column 2</div> 
 
     <div class="column bfc">column 3</div> 
 
    </div>

+0

'(最後の列の場合と同様に)noneを使ってfloatプロパティを削除すると、代わりにその位置付けのために静的になります。これは何を意味するのでしょうか?あなたは 'position:static'を意味しますか? –

+0

@JJoeコメントをいただきありがとうございます。私は以下の情報を提供したいと思います。要素の浮動小数点数を削除すると、元のフロー(位置)に戻ります。 HTML内のすべての要素にpositionがあります。staticにはデフォルトがあります(このプロパティをCSSに追加しなくても)。静的では、要素はドキュメントフローに現れるので、順番にレンダリングされます。この説明があなたに役立つことを願っています。私にお知らせください。 – GibboK

+0

しかし、 'column 3'には左右の余白もあります。それが順番にレンダリングされても、そのマージンが存在するはずです。 'float:none'では、その左余白はなくなります。 –

0

あなたは自分のCSSからクラス.bfcを削除します。実際には必要ありません。それはスタイルの問題を引き起こします。