2014-02-12 3 views
4

У меня есть JSFiddle. Может ли кто-нибудь объяснить, почему позиция якоря смещена относительно своих братьев и сестер? Я знаю, что могу исправить его с относительным положением и отрицательным верхним смещением, но я не понимаю, почему это так, в первую очередь.CSS якорь встроенный блок неровный

HTML:

<div class="container"> 
    <div class="left"></div> 
    <a href="">Some link</a> 
    <div class="right"></div> 
</div> 

CSS:

.container { 
    height: 25px; 
    white-space: nowrap; 
} 

.container .left { 
    border: 1px solid black; 
    display: inline-block; 
    margin: 0; 
    height: 25px; 
    width: 80px; 
    padding: 0; 
} 

.container .right { 
    border: 1px solid black; 
    display: inline-block; 
    margin: 0; 
    height: 25px; 
    width: 80px; 
    padding: 0; 
} 

.container a { 
    display: inline-block; 
    border: 1px solid black; 
    height: 25px; 
    width: 300px; 
    margin: 0; 
} 

ответ

6

Причина такого поведения объясняется отсутствием текста внутри ваших элементов .left и .right.

По умолчанию элементов инлайн-блоки имеет vertical-align: baseline, но так как у вас есть пустые элементы нет базовой линии, поэтому они будут автоматически выровнены по parent базовой линии (если добавить какой-то текст внутри них — даже &nbsp; — вы бы istantly решить проблема)

Во избежание такого поведения вы также можете установить общий vertical-align всем детям .container.

+0

Спасибо! Несмотря на то, что все ответы были исправлены, ваш вопрос действительно дал объяснение, что я был после. –

2

Вы можете добавить

vertical-align: top; 

в .container a

Это согласует якорь с дивизиями.

1

При объявлении inline-block необходимо указать vertical-align.

Здесь вы идете.

WORKING DEMO

The CSS Изменить:

.container a { 
    display: inline-block; 
    border: 1px solid black; 
    height: 25px; 
    width: 300px; 
    margin: 0; 
    vertical-align:top; 
} 
1

Вы можете использовать так много вариант

. Удалить Display:inline-block и добавить float:left

Здесь Demo

. Использование CSS vertical-align:top

Здесь demo

Смежные вопросы