インラインブロックDIVをコンテナー要素の上に揃えます


199

2つのinline-block divの高さが異なる場合、2つのの短い方がコンテナの上部に揃わないのはなぜですか?(デモ):

.container { 
    border: 1px black solid;
    width: 320px;
    height: 120px;    
}

.small {
    display: inline-block;
    width: 40%;
    height: 30%;
    border: 1px black solid;
    background: aliceblue;    
}

.big {
    display: inline-block;
    border: 1px black solid;
    width: 40%;
    height: 50%;
    background: beige;    
}
<div class="container">
    <div class="small"></div>
    <div class="big"></div>
</div>

小物divをコンテナの上部に配置するにはどうすればよいですか?


または、次のようにフロートします:jsfiddle.net/RHM5L/12
AO_


1
垂直方向の配置を適用:上; .smallクラスの場合
Deepu Sasidharan '28

1
フロートを使いたくありません。@ Mr.Alienに感謝します:)
Youssef

回答:


347

これvertical-alignは、デフォルトでベースラインに設定されているためです。

vertical-align:top代わりに使用:

.small{
    display: inline-block;
    width: 40%;
    height: 30%;
    border: 1px black solid;
    background: aliceblue;   
    vertical-align:top;
}

http://jsfiddle.net/Lighty_46/RHM5L/9/

または、@ f00644が言ったようfloatに、子要素にも適用できます。


フロートを適用した場合、コンテナにフロートの子が含まれていると、高さが問題になります。こちらの記事
ユーセフ

1
なぜbaselineデフォルトなのでしょうか?確かに理由はあると思いますが、予想外のことに、それは奇妙に思えます。あなたはマンハッタンのスカイライン効果に終わります。
Sridhar Sarnobat

フォントにはベースラインがあるため、垂直方向の配置はフォントの配置に使用されます。デフォルトがベースラインに解決されるのは論理的です。このような他の機会では、それを上書きする必要があります。
Ceedで

25

vertical-align2つの子divにプロパティを追加する必要があります。

.smallが常に短い場合は、プロパティをに適用するだけで済みます.small。最も高い可能性のいずれかの場合は、あなたは両方にプロパティを適用する必要があります.small.big

.container{ 
    border: 1px black solid;
    width: 320px;
    height: 120px;    
}

.small{
    display: inline-block;
    width: 40%;
    height: 30%;
    border: 1px black solid;
    background: aliceblue; 
    vertical-align: top;   
}

.big {
    display: inline-block;
    border: 1px black solid;
    width: 40%;
    height: 50%;
    background: beige; 
    vertical-align: top;   
}

垂直方向の配置は、インラインボックスまたはテーブルセルボックスに影響し、このプロパティにはさまざまな値の大きな数字があります。詳細については、https://developer.mozilla.org/en-US/docs/Web/CSS/vertical-alignを参照してください。


-1
<style type="text/css">
        div {
  text-align: center;
         }

         .img1{
            width: 150px;
            height: 150px;
            border-radius: 50%;
         }

         span{
            display: block;
         }
    </style>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <input type='password' class='secondInput mt-4 mr-1' placeholder="Password">
  <span class='dif'></span>
  <br>
  <button>ADD</button>
</div>

<script type="text/javascript">

$('button').click(function() {
  $('.dif').html("<img/>");

})

スパンのデフォルトの表示プロパティをインラインからブロックに変更するだけでうまくいくと思います。
holyghostgym

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.