2016-03-26 22 views
1

親と子の2つのdivがあるとします。親divの幅は200px、子の幅は105%です。今すぐ子供の右端が外側に流れます。ここでは、コードは次のようになります。親のdivより大きい子divの場合、余白が正しく機能しないのはなぜですか?

.container1 { 
 
       width: 200px; height: 200px; 
 
       border: 1px solid black; 
 
       margin-left: 100px; 
 
} 
 
.container2{ 
 
       width: 105%; 
 
       border: 1px dotted red; 
 
       height: 200px; 
 
       margin-right: 10%; 
 
}
<div class="container1"> 
 
    <div class="container2"></div> 
 
</div>

私の質問しないのはなぜマージン右、子divの上の正または負の値、仕事を持ちますか?一方、margin-leftは正の値と負の値の両方で動作します。

+0

を設定する必要があります。私はあなたが単位としてピクセルを使用しないようお勧めします。レスポンシブなスタイリングを可能にするため、パーセンテージ/ em/remを使用する方が良いでしょう。 – Andy

答えて

1

margin-right作業していて、.container2その親よりも大きいですし、効果を確認していないされています。ブラウザは左から右へ、上から下へレンダリングすることを覚えておいてください。

あなたがどんなに目に見える右マージン、.container2幅を持っているしたい場合は、オフトピックfloat: right;

.container2 { 
    width: 105%; 
    border: 1px dotted red; 
    height: 200px; 
    margin-right: 10%; 
    position: relative; 
    float: right; 
} 
+1

これは、子が親よりも大きいため、子divの右には何もありません。だから、親の右の国境に押しつけているわけではありません。 – user31782

1

マージン値を正または負にすることができます。あなたのコードでは、タイプミスがあります。 それは次のようになります。

margin-right: 10%; 

更新

あなたは子要素にdisplay: inline-blockを使用することができます検査要素をやったときに割り当てられたマージンを見たい場合。しかし、それが親になるように幅を設定するので、それはまだ効果を持たないか、要素をその隣に押し付けません。

.container1 { 
 
    width: 200px; 
 
    height: 200px; 
 
    border: 1px solid black; 
 
    margin-left: 100px; 
 
} 
 
.container2 { 
 
    width: 105%; 
 
    border: 1px dotted red; 
 
    height: 200px; 
 
    margin-right: 10%; 
 
    display: inline-block; 
 
}
<div class="container1"> 
 
    <div class="container2"></div> 
 
</div>

+0

Nah、それはまだ誤植を修正した後に動作しません。 – user31782

+0

@ user31782は私の答えを更新しました。 –

関連する問題