将嵌入式块DIV对齐到容器元素的顶部


198

当两个inline-block div具有不同的高度时,为什么两个中的较短者未对准容器的顶部?(演示):

.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
套用vertical-align:top; 的小班课程
Deepu Sasidharan 2014年

1
我不想使用浮点数。感谢@ Mr.Alien,它现在可以工作了:)
Youssef

Answers:


346

因为默认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子元素。


如果我使用浮子,如果容器像我的情况那样只是浮子,那么我的身高会有问题。在这里看看文章
Youssef

1
知道为什么baseline默认吗?我确信这是有充分理由的,但出于意外,这似乎很不可思议。您最终会得到曼哈顿的天际线效果。
Sridhar Sarnobat

垂直对齐用于字体对齐,因为字体具有基线,所以默认解析为基线是合乎逻辑的。在这种情况下,您必须覆盖它。
CEED

25

您需要为vertical-align两个子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 '18年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.