Вирівняйте вбудовані блоки DIVs до верхньої частини контейнера


198

Якщо два inline-block divs мають різну висоту, чому коротша з двох не вирівнюється до верхньої частини контейнера? ( DEMO ):

.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 class
Deepu Sasidharan

1
я не хочу використовувати float. дякую @ Mr.Alien, це працює зараз :)
Youssef

Відповіді:


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до дочірніх елементів.


Якщо я застосую поплавок, у мене виникнуть проблеми з висотою, якщо в контейнері будуть просто плавати дитячі, як у моєму випадку. Подивіться тут статтю
Юсеф

1
Будь-яка ідея, чому baselineза замовчуванням? Я впевнений, що є вагомі причини, але для тих, хто не очікує, це здається дивним. Ви закінчите з ефектом горизонту Манхеттена.
Шрідхар Сарнобат

Вертикальне вирівнювання використовується для вирівнювання шрифту, оскільки шрифти мають базову лінію, цілком логічно, що за замовчуванням встановлено базову лінію. В інших випадках, як цей, вам доведеться перезаписати його.
ceed

25

Вам потрібно додати vertical-alignвластивість до двох дітових дітей.

Якщо .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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.