2017-08-21 10 views
2

を追加し、私は次のようなHTMLとCSSがあります表示:インラインブロックは垂直パディング

* { 
 
    -webkit-box-sizing: border-box; 
 
    -moz-box-sizing: border-box; 
 
    box-sizing: border-box; 
 
} 
 

 
body { 
 
    margin: 0; 
 
} 
 

 
.row { 
 
    background-color: red; 
 
    /* display: inline-block; */ 
 
} 
 

 
ul { 
 
    list-style: none; 
 
    padding: 0; 
 
} 
 

 
ul li { 
 
    border: 2px solid green; 
 
    display: inline-block; 
 
    margin: 0; 
 
    padding: 15px; 
 
}
<div class="row"> 
 
    <ul> 
 
    <li>one</li> 
 
    <li>two</li> 
 
    <li>one</li> 
 
    </ul> 
 
</div>

を、私は私のCSSでinline-blockを使用する場合には、次のようになります。

enter image description here

display:inline-blockなし(これは完全に大丈夫です、pr

enter image description here

そこでここでは、この垂直パディングから来るん:ディスプレイをesuming)は、デフォルトでblockのですか?

+0

この質問はすでに回答されています https://stackoverflow.com/questions/27618000/why-ul-adds-extra-top-margin – pegla

答えて

3

詰め物は、並べ替えられていないリストと畳み代から来ます。親(div.row)のdisplay:inline-blockがない場合、そのdivはデフォルトでブロック要素として表示され、margins collapseと表示されます。 div.row要素にoverflow: autoを追加することで、マージンを縮小するための標準的な方法を適用することで、これを確認できます。

* { 
 
    -webkit-box-sizing: border-box; 
 
    -moz-box-sizing: border-box; 
 
    box-sizing: border-box; 
 
} 
 

 
body { 
 
    margin: 0; 
 
} 
 

 
.row { 
 
    background-color: red; 
 
    /* display: inline-block; */ 
 
    overflow:auto; 
 
} 
 

 
ul { 
 
    list-style: none; 
 
    padding: 0; 
 
} 
 

 
ul li { 
 
    border: 2px solid green; 
 
    display: inline-block; 
 
    margin: 0; 
 
    padding: 15px; 
 
}
<div class="row"> 
 
    <ul> 
 
    <li>one</li> 
 
    <li>two</li> 
 
    <li>one</li> 
 
    </ul> 
 
</div>

その余分なスペースを取り除くための最も簡単な方法は、<ul>上ゼロにマージンを設定することです。

0

ulからマージンを取り除くと、マージンはulのデフォルトマージンになります。

* { 
 
    -webkit-box-sizing: border-box; 
 
    -moz-box-sizing: border-box; 
 
    box-sizing: border-box; 
 
} 
 

 
body { 
 
    margin: 0; 
 
} 
 

 
.row { 
 
    background-color: red; 
 
    display: inline-block; 
 
} 
 

 
ul { 
 
    list-style: none; 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 

 
ul li { 
 
    border: 2px solid green; 
 
    display: inline-block; 
 
    margin: 0; 
 
    padding: 15px; 
 
}
<div class="row"> 
 
    <ul> 
 
    <li>one</li> 
 
    <li>two</li> 
 
    <li>one</li> 
 
    </ul> 
 
</div>

関連する問題