2016-05-11 16 views
3

誰でも私に仕様を教えてもらえますか?インラインコンテナの余白は余白になりません。どうして?

x-x { 
 
    padding: 10px; 
 
}
<x-x> 
 
    <div>1</div> 
 
    <div>2</div> 
 
</x-x>

  • パディング左はパッド
  • しかし、パディングトップとパディングボトムは
  • していない理由ですか?

http://codepen.io/geoyws/pen/NNJjPV

+0

そのあなたが...ブロックレベル要素ですd​​iv要素を持っているので、あなたが見ることができるトリックのように、あなたがdiv要素を追加した場合、{表示:インラインブロック; } x-xのスタイリングの前に、余白が残っていると表示されます – Megha

+1

''は有効なHTMLタグではありません。なぜこれを使っていますか? – davidatthepark

+0

あなたのケースでこれを行うことができます。div { padding-left:10px; }これは動作します – Megha

答えて

4

カスタム要素(<x-x>CSS initial valuesデフォルト。したがって、そのdisplayの値はinlineです。

この要素には、ブロックレベルの要素である2つのdivが含まれています。

インラインボックスはブロックレベルのボックスをラップできないため、ブラウザはdivをラップする前に暗黙的に<x-x>を閉じます。

したがって、左側のパッドが機能しないのは、カスタム要素が実際に2つのdivを折り返していないためです。これは、最初のオープニング<div>の直前で閉じられています(実際には、カスタム要素とdivは兄弟のようになります)。

はしかし、カスタム要素でspanを入れた場合、パディングが動作します、spanはデフォルトでdisplay: inlineあるので、それは別のインラインレベル要素(demo)でラップすることができます。

これはすべて開発ツールで確認できます。カスタム要素を強調表示してdivをラップしないことを確認します。

インラインボックスは、インフローブロックレベルボックスを含む

9.2.1.1. Anonymous block boxes

、インライン:スペック、インラインレベルボックス「の周りに破壊」ブロックレベルボックスで説明したように

ブロックレベルのボックス(および連続する のブロックレベルの兄弟、または折りたたみ可能な空白および/またはフロー外の 要素のみで区切られたブロックレベルの兄弟)の周囲には、 (およびその同じ行ボックス内のそのインライン祖先) 、インラインボックスを2つのボックスに分割する( 側が空)、ブロックレベルのボックスの両側に1つ。休憩前と休憩後の行 は、匿名の ブロックボックスで囲まれ、ブロックレベルのボックスは、これらの匿名ボックス の兄弟になります。そのようなインラインボックスが相対 の位置付けの影響を受ける場合、結果の翻訳はインラインボックスに含まれるブロックレベルの ボックスにも影響します。

+0

ありがとうございます。 – geoyws

+0

厳密に言えば、x-xによって生成されたインラインボックスはdivの兄弟ではありません。それらは匿名のブロックボックスの子です。つまり、インラインレベルのボックスとブロックレベルのボックスが同じ書式設定コンテキストで共存できないため、divの兄弟である無名のブロックボックスです。しかし、実際、インラインボックスは、もは​​やdivの親ではありません。 – BoltClock

+0

@BoltClock、私は私のPCに戻ってくるときに私の答えを更新します。いつものように、品質のフィードバックに感謝します。 –

1

あなたはディスプレイを備えた10pxのでのX-Xにパディングを設定していますインライン;デフォルトでは、子の表示プロパティはです。display:block;したがって、表示ブロックを親に追加するだけで、つまり、x-x要素に加えて、埋め込み:10px;あなたは期待した結果を得るでしょう。

x-x { 
    padding: 10px; 
    display:block; 
} 

ハッピーコーディング:-)