2013-07-16 12 views
16

Mam trochę kodu HTML i CSS, który tworzy wbudowane elementy blokowe (div), które można znaleźć na stronie docelowej. Jednak wydają się być wyrównane w pionie poprawnie, jeśli zawierają pewną zawartość (nieuporządkowaną listę) wewnątrz elementów div. Jeśli nie ma zawartości w div, element zostanie przesunięty w dół. Oto jsfiddle. Oto kod. Czy ktoś może wyjaśnić, dlaczego trzeci blok div nie jest wyrównany w pionie?Elementy div typu Inline-block nie są zgodne zgodnie z oczekiwaniami.

EDIT: Choć jestem wygodny, że „naprawić”, aby kwestia ta ma na celu zapewnienie, że każdy div wykorzystuje „vertical-align: top” w stylizacji, nadal jestem trochę zaskoczony, aby dlaczego Muszę używać tej stylizacji w pierwszej kolejności. Sądzę, że elementy div zawsze ustawiałyby się równo, niezależnie od zawartości wewnątrz 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> 

Odpowiedz

9

dodaj vertical-align: top; do .landing-block class

34

Elementy wbudowanego bloku domyślnie są vertical-align:baseline;. Zmień to 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 */ 

    } 
+0

Dzięki, to było łatwe! Jednak nadal jestem nieco zdezorientowany co do tego, co tak naprawdę powoduje, że trzeci blok przemieszcza się w dół. Dlaczego "linia bazowa" wydaje się być dnem wewnętrznej treści div, a nie dnem samego div? – Ken

+0

@Ken Trzeci div znajduje się w linii bazowej, dwie wewnętrzne linie w pozostałych 2 elementach "popycha" 2 linie w górę – koningdavid

-3

Dodaj pływaka: lewy

.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

+0

Dlaczego potrzebuję pływaka: pozostawiony, jeśli mam już wbudowane bloki, które można umieścić wewnątrz linia. – Gherman

7

Ustaw vertical-align: top dla deklaracji .landing-block klasy w swojej CSS.

Powiązane problemy