Элементы div Inline-Block не выстраиваются так, как ожидалось - программирование
Подтвердить что ты не робот

Элементы div Inline-Block не выстраиваются так, как ожидалось

У меня есть HTML и CSS, которые создают встроенные элементы блока (div), которые можно найти на целевой странице. Однако они выглядят корректно по вертикали, когда они содержат некоторый контент (неупорядоченный список) внутри div. Если в div нет содержимого, элемент будет нажат вниз. Вот jsfiddle. Вот код. Может ли кто-нибудь объяснить, почему третий блок div не выровнен по вертикали?

РЕДАКТИРОВАТЬ. Мне комфортно, что "исправление" этой проблемы заключается в том, чтобы каждый div использовал стиль "vertical-align: top" в стиле, я все еще немного озадачен почему я должен использовать этот стиль в первую очередь. Я бы подумал, что элементы div всегда будут выравниваться равномерно, независимо от содержимого внутри div.

<html>
  <head>
<style type="text/css">
    body {
        font-family: Helvetica;
    }

    h1 {
        margin: 0px;
        padding: 10px;
        font-weight: bold;
        border-bottom: 1px solid #aaaaaa;
        font-size: 12px;
    }

    a {
        text-decoration: none;
    }

    ul {
        padding-left: 20px;
    }

    li {
        list-style-type: none;
        font-size: 12px;
    }

    .landing-block {
        display: inline-block;
        background-color: #eeeeee;
        margin-right: 30px;
        width: 192px;
        height: 140px;
        border: 1px solid #aaaaaa;
        -moz-box-shadow: 3px 3px 5px #535353;
        -webkit-box-shadow: 3px 3px 5px #535353;
        box-shadow: 3px 3px 5px #535353;
    }

    .header {
        padding: 10px;
        background-color: red;
        border-bottom: 1px solid #aaaaaa;
        color: #ffffff;
    }

    a:hover {
        text-decoration:underline; 
    }

    h1 > a {
        color: #ffffff;
    }

    h1 > a:hover { 
        color:#ffffff;
    }

    li > a {
        color: #000000;
    }

    li > a:hover { 
        color: #000000;
    }
   </style>
    </head>
    <body>
    <div>
        <div class='landing-block'>
            <h1 style='background-color: #3991db;'>
                <a href='#'>COMPANIES</a>
            </h1>
            <ul>
                <li><a href='#'>Search Companies</a></li>
                <li><a href='#'>New Company</a></li>
            <ul>
        </div>
        <div class='landing-block'>
            <h1 style='background-color: #9139db;'>
                <a href='#'>PEOPLE</a>
            </h1>
            <ul>
                <li><a href='#'>Search People</a></li>
                <li><a href='#'>New Person</a></li>
            <ul>
        </div>
        <div class='landing-block'>
            <h1 style='background-color: #c2db39;'>
                <a href='#'>Products</a>
            </h1>
        </div>
    <div>
</body>
</html>
4b9b3361

Ответ 1

элементы встроенного блока по умолчанию vertical-align:baseline;. Измените это на vertical-align:top;

 .landing-block {
        display: inline-block;
        background-color: #eeeeee;
        margin-right: 30px;
        width: 192px;
        height: 140px;
        border: 1px solid #aaaaaa;
        -moz-box-shadow: 3px 3px 5px #535353;
        -webkit-box-shadow: 3px 3px 5px #535353;
        box-shadow: 3px 3px 5px #535353;
        vertical-align:top; /* add this rule */

    }

Ответ 2

добавить вертикальное выравнивание: верх; класс .landing-block

Ответ 3

Задайте vertical-align: top для объявления класса .landing-block в вашем CSS.

Ответ 4

Добавить float: left

.landing-block {
display: inline-block;
background-color: #eeeeee;
margin-right: 30px;
width: 192px;
height: 140px;
border: 1px solid #aaaaaa;
-moz-box-shadow: 3px 3px 5px #535353;
-webkit-box-shadow: 3px 3px 5px #535353;
box-shadow: 3px 3px 5px #535353;
float: left;    

}

jsfiddle