2015-02-03 8 views
0

Код ниже показывает две ссылки в div с малой шириной.margin-bottom не работает в этом случае

<style> 
div{ 
width: 89.5px; 
border:1px solid #ddd; 
} 

a{ 
    border:1px solid red; 
    display: inline; 

    margin-bottom:30px; 
} 
</style> 
<div> 
<a href="#">AAAAAAA</a> 
<a href="#">BBBBBBBB</a> 
</div> 

Любые идеи, почему margin-bottom:30px; не работает так, что одна кнопка будет ниже другой в течение примерно 30px?

Что является лучшим способом для слегка изменить этот код, так что есть пробел между кнопками?

И вот jsFiddle при необходимости. Спасибо.

ответ

5

Внутренние элементы не могут иметь поля.

Если вам нужно добавить к себе ссылку, вам необходимо сделать это по ссылке block, или inline-block. Здесь вам нужен inline-block.

a {display: inline-block} 

При установке там block, маржа будет apllied и ширина ссылка будет 100% (или лучше, 100% - side margins - paddings - borders).

Примечание: вы установили display: inline, которые ничего не делают в этом случае. Ссылки по умолчанию: inline.

+0

'inline-block' лучше, если вы хотите сохранить« не полную ширину »вещь, которую' inline' дает вам, имея возможность использовать поля, которые могут иметь только 'block'. –

+0

@NiettheDarkAbsol: Я обновил свой ответ, когда вы написали комментарий, я только что закончил обновление. Но, спасибо :-) – panther

+0

BTW, встроенные ящики могут иметь горизонтальные поля, но не вертикальные – user3790069

2

Я вижу проблему, и это потому, что вы используете display: inline, а не display: block.

a{ 
    border:1px solid red; 
    display: block; 

    margin-bottom:30px; 
} 
+0

Между 'block' и' inline-block' существует другое поведение. 'Inline-block' лучше в этом случае. OP объявляет 'display: inline', что означает ширину _set, поскольку текст является широким, а не 100% _. – panther

1

Это не сработает, если у вас есть значение display:inline.

вы должны изменить значение display на display:block; или display:inline-block.

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